2011-04-24 3 views
1

Je souhaite copier des données de la plage (a3: M3) dans la feuille de calcul "SL" vers la plage (a3: m3) dans la feuille de calcul "EL" uniquement si la plage (a3: M3) est vide . Sinon, copiez les données sélectionnées sur la ligne suivante (a4: m4).Ignorer les cellules non vides pour coller des données spéciales

est sous le code j'ai essayé de travailler ..mais son ne fonctionne pas ... plz aider

Range("C9:G10").Select 
Selection.Copy 
Sheets("EL").Select 

For n = 1 To n = 100 
    If Cells(n, 2).Value <> "" Then 
     Cells(n + 1, 2).Select 
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
      :=False, Transpose:=False 
    End If 
Next n 

Répondre

1

Il y a quelques points dans votre code, je ne comprends pas:

  • pourquoi fait-il référence à C9:G10? Pourquoi une boucle de n=1 to 100?
  • La syntaxe For n = 1 To n = 100 ne fonctionne pas comme on pouvait s'y attendre -> le remplacer par For n = 1 To 100)

Voici ma solution à votre problème.

Sub copyRange() 

    ' Look if destination cells are empty 

    Dim isempty As Boolean  
    isempty = True 

    For Each cell In Sheets("EL").Range("a3:m3").Cells 
     If cell.Value! = "" Then isempty = False 
    Next 

    ' Copy content from SL to EL into the correct line 
    Sheets("SL").Range("a3:m3").Select 
    Selection.Copy 
    If isempty Then 
     Sheets("EL").Range("a3:m3").PasteSpecial Paste:=xlPasteValues 
    Else 
     Sheets("EL").Range("a4:m4").PasteSpecial Paste:=xlPasteValues 
    End If 
End Sub 
+0

Merci Howard C9: G10 est juste le! données initiales à copier (pour faciliter la référence je mets a3: m3) bien désolé de ne pas être clair au départ dans ma question. en fait, il devrait être continu. C'est-à-dire si a3: m3 n'est pas vide alors devrait aller à a4: m4, si a4: m4 n'est pas vide, alors a5: m5 et continuer jusqu'à la dernière cellule dans excel ou le limiter dire à a10000: m10000 – VeeRz

Questions connexes