• Initiateur de la discussion Initiateur de la discussion gothc
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

gothc

XLDnaute Occasionnel
Bonjour le forum

je cherche a simplifier un code vba pour une mise a jour d'un fichier avec la liste EN D 222 ET F222

le début du code est le suivant voir le fichier en piéce jointe en example Merci de votre aide

Sub etiquette()
'
' etiquette Macro
'

'

Range("D222").Select
Selection.Copy

Range("B3:B4").Select
ActiveSheet.Paste

Range("D223").Select
Selection.Copy

Range("d3:d4").Select
ActiveSheet.Paste

Range("D224").Select
Selection.Copy

Range("F3:F4").Select
ActiveSheet.Paste

Range("D225").Select
Selection.Copy

Range("H3:H4").Select
ActiveSheet.Paste

Range("D226").Select
Selection.Copy

Range("J3:J4").Select
ActiveSheet.Paste

Range("D227").Select
Selection.Copy

Range("L3:L4").Select
ActiveSheet.Paste

Range("F222").Select
Selection.Copy

Range("B8:B9").Select
ActiveSheet.Paste

Range("F223").Select
Selection.Copy

Range("d8:d9").Select
ActiveSheet.Paste

Range("F224").Select
Selection.Copy

Range("F8:F9").Select
ActiveSheet.Paste

Range("F225").Select
Selection.Copy

Range("H8:H9").Select
ActiveSheet.Paste

Range("F226").Select
Selection.Copy

Range("J8:J9").Select
ActiveSheet.Paste

Range("F227").Select
Selection.Copy

Range("L8:L9").Select
ActiveSheet.Paste



End Sub

Merci
 
Dernière édition:
Re : code vba

Bonsoir gothc,

Voici un début de code simplifié: pas besoin de sélectionner des cellules pour faire des copies.

Je te laisse le soin de continuer pour les autres lignes.

Code:
Sub etiquette()
    Range("D222").Copy Destination:=Range("B3:B4")
    Range("D223").Copy Destination:=Range("d3:d4")
    Range("D224").Copy Destination:=Range("F3:F4")
    ...
    ...
    ...
End Sub

Cordialement.
 
Dernière édition:
Re : code vba

Bonsoir le fil, bonsoir le forum,

Une autre proposition avec un boucle qui récupère toutes les données :

Code:
Sub etiquette()
Dim COL As Byte 'déclare la variable COL (COLonne)
Dim LID As Integer 'déclare la variable LID (Ligne de Début)
Dim LIR As Integer 'déclare la variable LIR (LIgne de Référence)
Dim LI As Integer 'déclare la variable LI (LIgne)

COL = 2 'définit la colonne COL
LID = 3 'définit la ligne du début LID
LIR = 221 'définit la ligne de référence LIR
For LI = 222 To 366 'boucle des lignes LI de 222 à 366
    'copie la cellule ligne LI, colonne D dans la plage de cellules LID,COL : LID+1,COL
    Cells(LI, 4).Copy Range(Cells(LID, COL), Cells(LID + 1, COL))
    'copie la cellule ligne LI, colonne F dans la plage de cellules LID+5,COL : LID+6,COL
    Cells(LI, 6).Copy Range(Cells(LID + 5, COL), Cells(LID + 6, COL))
    COL = COL + 2 'incrémente COL de deux colonnes
    'si la ligne LI est égale à la ligne de référence LIR + 6, la ligne de référence LIR devient la ligne LI et la colonne COL vaut 2
    If LI = LIR + 6 Then LIR = LI: LID = LID + 9: COL = 2
Next LI 'prochaine ligne de la boucle
End Sub

Attention ! j'ai supprimé la ligne 111 (je crois car je me souviens plus...) car il y avait un décalage à un moment...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
632
  • Question Question
Microsoft 365 Erreur 5
Réponses
24
Affichages
3 K
Réponses
9
Affichages
966
Retour