COPIE DES CELLULES AVEC CODE VBA

bennisay

XLDnaute Occasionnel
Bonjour le forum
je veux copier automatiquement des cellules d une feuille a une autre avec un code vba
j ai mis une piece joint pour monter l exemple
MERCI pour votre aide
 

Pièces jointes

  • CODE VBA POUR COPIE DE CELLULES.xlsx
    53.6 KB · Affichages: 40

vgendron

XLDnaute Barbatruc
Hello

la demande n'est pas très claire... peux tu expliciter stp
avec un code vba il me copie la cellule "j3" "k3"
on copie les cellules J3:K3: OU CA? quelle feuille?

et dans la colonne "L" et "M" juste les cellules qui sont en liesant avec
les cellules remplie par une valeur de la colonne "P" et "Q" et les copier dans la feuille " G COMMANDE"
??
Dans le tableau "Reference - Designation - Quant" colonnes LMN, on ne prend QUE les lignes qui ont une info en colonne P Q ??
on les copie dans la feuille G Commande... ou ca? en dessous des données à partir de la colonne A, ou en dessous des données à partir de la colonne K ? ou encore.. colonnne R?

si j appuie sur nouveau j aurai la colonne "p" et "q" vide
plutot qu'appuyer une seconde fois.. autant effacer après le copier coller..

si je met un autre exemple "1" dans la cellule "P8" et "08/06/2017" dans le celulle "Q8" en appuiyant sur enregister j aurai la ligne en verre dans la feuille " G COMMANDE"
?? tu souhaites juste conserver les couleurs quand on fait un copier coller?
 

bennisay

XLDnaute Occasionnel
BONOUR merci pour l inetrret

on copie les cellules J3:K3: OU CA? quelle feuille?
ok j explique c est pas facile de l expliquer mais je vais te repondre cas par cas
les cellules J3 K3 seront copier dans la feuille G COMMANDE dans la colonne "K" " L"

Dans le tableau "Reference - Designation - Quant" colonnes LMN, on ne prend QUE les lignes qui ont une info en colonne P Q ??
on les copie dans la feuille G Commande... ou ca? en dessous des données à partir de la colonne A, ou en dessous des données à partir de la colonne K ? ou encore.. colonnne R?

1 Oui on ne prend que les lignes qui ont infos sur la colonnes P Q
2 on les copier sous les donnes dans les colonnes K L M N O P de la feuille " G COMMANDE"
 

vgendron

XLDnaute Barbatruc
Re,

voir le code selon ma compréhension
VB:
Sub CopieColle()

With Sheets("G COMMANDE")
    LigneDest = .Range("K" & .Rows.Count).End(xlUp).Row + 1 'on récupère la dernière ligne de la colonne K
   
    Set zone = Range("L3:N25")
    For Each ele In zone
        If ele.Column = 12 And ele.Offset(0, 4) <> "" Then 'si il y a des données en colonne P
            Range("J3:K3").Copy Destination:=.Range("K" & LigneDest) 'on recopie les cellules J3:K3
            Union(Range(ele.Address, ele.Offset(0, 1)), Range(ele.Offset(0, 4), ele.Offset(0, 5))).Copy Destination:=.Range("M" & LigneDest) 'on copie les data des colonnes L M P et Q
            LigneDest = LigneDest + 1 'on incrémente la dernière ligne
        End If
    Next ele
End With
Range("J3:K3").ClearContents 'on efface
Range("P3:Q25").ClearContents 'on efface
End Sub
 

bennisay

XLDnaute Occasionnel
REB
merci pour votre aide
je croie que tu as compris mais il reste juste quelques touches a rectifier
1 les cellules j3 et k3 sont copier sous forme de liste et non pas juste une valeur
2 je dois infecter ce code au button ENREGISTER pour activer le code vba ?
 

vgendron

XLDnaute Barbatruc
Re
effectivement. j'ai oublié de supprimer la liste de validation qui est copiée

VB:
Sub CopieColle()

With Sheets("G COMMANDE")
    LigneDest = .Range("K" & .Rows.Count).End(xlUp).Row + 1 'on récupère la dernière ligne de la colonne K
   
    Set zone = Range("L3:N25")
    For Each ele In zone
        If ele.Column = 12 And ele.Offset(0, 4) <> "" Then 'si il y a des données en colonne P
            Range("J3:K3").Copy Destination:=.Range("K" & LigneDest) 'on recopie les cellules J3:K3
            .Range("K" & LigneDest).Resize(1, 2).Validation.Delete 'on supprime la liste de validation qui a été copiée
            Union(Range(ele.Address, ele.Offset(0, 1)), Range(ele.Offset(0, 4), ele.Offset(0, 5))).Copy Destination:=.Range("M" & LigneDest) 'on copie les data des colonnes L M P et Q
            LigneDest = LigneDest + 1 'on incrémente la dernière ligne
        End If
    Next ele
End With
Range("J3:K3").ClearContents 'on efface
Range("P3:Q25").ClearContents 'on efface
End Sub

Le code est à mettre dans un module standard VBA
1) ouvrir l'éditeur vba: Alt+F11
2) insérer module standard
3) copier le code
4) clic droit sur le bouton "enregistrer"
5) affecter macro - copiecolle

Voir PJ
 

Pièces jointes

  • CODE VBA POUR COPIE DE CELLULES.xlsm
    61.1 KB · Affichages: 40

Statistiques des forums

Discussions
312 189
Messages
2 086 033
Membres
103 102
dernier inscrit
nath34490