Boucle de macro pour extraire datatables de l'arrêt de la feuille à la feuille lorsque aucune donnée n'est renvoyée et ne pas entrer 0

J'essaie d'get datatables des lignes G, H et I de la ligne 15 vers le bas (arrêter quand il n'y a pas de données présentes) à partir de la "feuille de command", être collées dans une feuille intitulée "Données" dans les colonnes M, Q et R de la rangée 8 vers le bas.

J'ai essayé d'save une macro, cependant, comme ces données changent jour après jour, ma macro enregistrée rest la même et je n'ai pas le savoir comment placer une formule IF en macro pour l'arrêter lorsqu'il n'y a pas de données dans la cellule d'origine . Un jour, datatables seront de la ligne 15 à 50 dans la feuille de command et les 15 à 71 suivants (commence toujours à 15). Lorsque je fais la macro pour dire 200 lignes, il couvre toutes les lignes, peu importe le nombre de lignes, il place alors un zéro dans la fiche de données lorsque rien n'est présent dans la cellule de la feuille de command. Ce que je voudrais, c'est de laisser vide s'il n'y a pas de numéro dans la cellule de la feuille de command.

par exemple, la colonne "Feuille de command" coller à "Fiche technique" (à partir de la ligne 15 sur la feuille de command et la ligne 8 sur la fiche technique) G à M / H à Q / I à R

par exemple G15 à M8 / H16 à Q9 / I17 à R10

Voyez la macro de l'enregistreur de base comme une idée.

Merci d'avance

ActiveWindow.SmallScroll Down:=-15 Range("M8").Select ActiveCell.FormulaR1C1 = "='Order Sheet'!R[7]C[-6]" Range("M8").Select Selection.AutoFill Destination:=Range("M8:M159"), Type:=xlFillDefault Range("M8:M159").Select ActiveWindow.SmallScroll Down:=-135 Range("Q8").Select ActiveCell.FormulaR1C1 = "='Order Sheet'!R[7]C[-9]" Range("Q8").Select Selection.AutoFill Destination:=Range("Q8:Q159"), Type:=xlFillDefault Range("Q8:Q159").Select ActiveWindow.SmallScroll Down:=-132 Range("R8").Select ActiveCell.FormulaR1C1 = "='Order Sheet'!R[7]C[-9]" Range("R8").Select Selection.AutoFill Destination:=Range("R8:R159"), Type:=xlFillDefault Range("R8:R159").Select ActiveWindow.SmallScroll Down:=-123 Range("I3").Select 

Voici une façon de copyr toutes les valeurs de G15 vers le bas vers M8 vers le bas

 Dim sourceSht As Worksheet 'sheet you want to copy from Dim targetSht As Worksheet 'sheet you want to copy too Dim sourceRng As Range 'what you want to copy Dim targetRng As Range 'where you want to copy to Dim lastRow As Long 'the last row that holds data Set sourceSht = Sheets("Order Sheet") Set targetSht = Sheets("Data") With sourceSht lastRow = .Cells(.Rows.Count,7).End(xlUp).Row '7 is the column number End With Set sourceRng = sourceSht.Range("G15:G" & lastRow) Set targetRng = targetSht.Range("M8").Resize(sourceRng.Rows.Count, 1) ' Range("M8:M"& lastRow - 7) would also be possible targetRng.Value = sourceRng.Value 

Vous voudrez peut-être introduire des variables pour contenir les indices de colonnes et les nombres de lignes (comme 15 et 8). Vous pouvez également avoir les plages contenant plus d'une colonne pour copyr plus de données à la fois.