VBA Excel Copier/Coller des cellules seulement si non-vides

BillRussell Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Je demande votre aide sur un sujet qui peut paraitre basique mais je ne trouve pas sur le forum le code qu'il me faut.

Ma config : Excel 2013

Mon besoin :
Copier une plage de cellule d'une feuille vers une autre récapitulative mais en ne copiant que les cellules avec des valeurs, non vides donc. Là où ca se complique c'est que j'ai besoin de coller donc que les cellules remplies de la feuille "Option 1" dans la feuille "Suivi budget" et coller les valeurs de la feuille "Option 2" juste à la ligne d'après.

   
Sub Test_2()
'Boucle tant que pas vide
Do While Not (IsEmpty(ActiveCell))
    'Copier ligne
     With Sheets("Suivi Budget")
        Sheets("Option 1").Range("A7:A26").Copy_
        Destination = .Cells(.Cells(655636, 8).End(xlUp).Row + 1, 1)
        Application.CutCopyMode = False
     End With  
Loop
End Sub


Pouvez vous me dire ce qui ne va pas dans mon code, car il ne marche pas..
Avez-vous peut-etre une piste pour faire ceci differemment ?

Je vous remercie et n'hésitez pas si vous voulez plus d'informations ou que je fournisse le fichier de test

1 réponse

ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Bonjour Bill, bonjour le forum,

Peut-être comme ça :

Sub Test_2()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim DEST As Range 'déclare la variable OS (cellule de DESTination)

Set OS = ActiveCell 'définit l'onglet source OS
Set OD = Sheets("Suivi Budget") 'définit l'onglet destination OD
For Each CEL In OS.Range("A7:A26") 'boule sur toutes les cellues CEL de la plage A7:A26
    If CEL <> "" Then 'condition : si la cellule n'est pa vide
        Set DEST = OD.Cells(Application.Rows.Count, 8).End(xlUp).Offset(1, 0) 'définit la cellue de destination DEST
        CEL.Copy DEST 'copie la celllue CEL dans DEST
    End If 'fin de la condition
Next CEL 'prochaine celllue de la boucle
End Sub


À plus,
ThauTheme
0