XL 2013 VBA IF + Copy + Paste

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 !

Kidcarotte

XLDnaute Junior
Bonjour a tous,

J'ai recherche ce sujets sur le forum, en essayant les differentes propositions, mais je n'ai pas reussi a faire fonctionner mon code. Peut etre que VBA n'est pas fait pour moi ^^

Je souhaiterai copie coller des informations, d'une page 2 a une page 1, en fonction d'une valeur. Precisement :
J'ai deux feuilles 1 et 2
Dans la feuille deux il y a des valeurs associees a une identification. Exemple : 1A = 200, 250, 300. 1B = 500,560,800 etc....
Le but est que dans la feuille 1 on rentre la cellule B16 cette identification ( 1A, 1B, etc...) et que une fois l'ID rentree, les valeurs (200,250,300 etc...) se copie automatiquement de C16 : E16
Cependant, cela ne marche pas. Je n'ai pas de message d'erreure, simplement rien ne se passe.

Mon code est le suivant :

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address <> Range("B16").Address Then Exit Sub
If Target = "1A" Then Worksheets("Office").Range("AH2:AJ2").Copy Worksheets("Warehouse").Range("C16")

End Sub

Si vous avez des suggestions, je suis preneuse

Merci par avance
 
Dans Private Sub Worksheet_Change(ByVal Target As Range) de la feuille Warehouse on trouve en première ligne:

VB:
If Target.Address <> Range("E5").Address Then Exit Sub

on ne passera donc jamais sur les instructions de fin de code lorsqu'on modifie la cellule B16 :
VB:
If Target.Address <> Range("B16").Address Then Exit Sub
If Target = "1A" Then Sheets("Office").Range("AH2:AJ2").Copy: Sheets("Warehouse").Range("C16:E16").PasteSpecial
If Target = "1B" Then Sheets("Office").Range("AH3:AJ3").Copy: Sheets("Warehouse").Range("C16:E16").PasteSpecial

il faudrait modifier le code pour qu'il réagisse en fonction de la cellule modifiée:


Code:
If Not Intersect(Target, Range("E5")) Is Nothing Then
    Application.EnableEvents = False
    If Target = "No packaging" Then Range("A5:D5").Copy Range("A8")
    If Target = "No packaging" Then Range("E5").Copy Range("E8")
.../...
    If Target = "Plastic pallet" Then Range("A5:D5").Copy Range("F8")
    If Target = "Plastic pallet" Then Range("E5").Copy Range("E8")
    Application.EnableEvents = True
End If

If Not Intersect(Target, Range("B16")) Is Nothing Then
    If Target = "1A" Then Sheets("Office").Range("AH2:AJ2").Copy: Sheets("Warehouse").Range("C16:E16").PasteSpecial
    If Target = "1B" Then Sheets("Office").Range("AH3:AJ3").Copy: Sheets("Warehouse").Range("C16:E16").PasteSpecial
End If
 
Bonjour tous,
Il faut utiliser EnaledEvent pour neutraliser les événements
Voici un corrigé de la macro
Bruno
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$E$5" Then
If Target = "No packaging" Then Range("A5:D5").Copy Range("A8")
If Target = "No packaging" Then Range("E5").Copy Range("E8")
If Target = "No packaging" Then Range("F8:I8") = "0"
If Target = "Cardboard Box" Then Range("A5:D5").Copy Range("F8")
If Target = "Cardboard Box" Then Range("E5").Copy Range("E8")
If Target = "Plastic box" Then Range("A5:D5").Copy Range("F8")
If Target = "Plastic box" Then Range("E5").Copy Range("E8")
If Target = "Plastic bag" Then Range("A5:D5").Copy Range("A8")
If Target = "Plastic bag" Then Range("E5").Copy Range("E8")
If Target = "Corrugated box" Then Range("A5:D5").Copy Range("F8")
If Target = "Corrugated box" Then Range("E5").Copy Range("E8")
If Target = "Cardboard tube" Then Range("A5:D5").Copy Range("F8")
If Target = "Cardboard tube" Then Range("E5").Copy Range("E8")
If Target = "Corrugated tube" Then Range("A5:D5").Copy Range("F8")
If Target = "Corrugated tube" Then Range("E5").Copy Range("E8")
If Target = "Corrugated board" Then Range("A5:D5").Copy Range("F8")
If Target = "Corrugated board" Then Range("E5").Copy Range("E8")
If Target = "Cardboard board" Then Range("A5:D5").Copy Range("F8")
If Target = "Cardboard board" Then Range("E5").Copy Range("E8")
If Target = "Plastic Can-bottle" Then Range("A5:D5").Copy Range("F8")
If Target = "Plastic Can-bottle" Then Range("E5").Copy Range("E8")
If Target = "Plastic bubble foil" Then Range("A5:D5").Copy Range("A8")
If Target = "Plastic bubble foil" Then Range("E5").Copy Range("E8")
If Target = "Plastic antistatic bag" Then Range("A5:D5").Copy Range("A8")
If Target = "Plastic antistatic bag" Then Range("E5").Copy Range("E8")
If Target = "Plastic tube" Then Range("A5:D5").Copy Range("A8")
If Target = "Plastic tube" Then Range("E5").Copy Range("E8")
If Target = "Paper bag" Then Range("A5:D5").Copy Range("A8")
If Target = "Paper bag" Then Range("E5").Copy Range("E8")
If Target = "VA paper (anticorrosion)" Then Range("A5:D5").Copy Range("A8")
If Target = "VA paper (anticorrosion)" Then Range("E5").Copy Range("E8")
If Target = "VA plastic (anticorrosion)" Then Range("A5:D5").Copy Range("A8")
If Target = "VA plastic (anticorrosion)" Then Range("E5").Copy Range("E8")
If Target = "Wooden box or crate" Then Range("A5:D5").Copy Range("F8")
If Target = "Wooden box or crate" Then Range("E5").Copy Range("E8")
If Target = "Steel can or barrel" Then Range("A5:D5").Copy Range("F8")
If Target = "Steel can or barrel" Then Range("E5").Copy Range("E8")
If Target = "Plastic blister packaging" Then Range("A5:D5").Copy Range("F8")
If Target = "Plastic blister packaging" Then Range("E5").Copy Range("E8")
If Target = "PS (Poly-styrene)" Then Range("A5:D5").Copy Range("F8")
If Target = "PS (Poly-styrene)" Then Range("E5").Copy Range("E8")
If Target = "Aerosols Metals" Then Range("A5:D5").Copy Range("F8")
If Target = "Aerosols Metals" Then Range("E5").Copy Range("E8")
If Target = "Wooden pallet" Then Range("A5:D5").Copy Range("F8")
If Target = "Wooden pallet" Then Range("E5").Copy Range("E8")
If Target = "Plastic pallet" Then Range("A5:D5").Copy Range("F8")
If Target = "Plastic pallet" Then Range("E5").Copy Range("E8")
End If
If Target.Address = "$B$16" Then
If Target = "1A" Then Sheets("Office").Range("AH2:AJ2").Copy: Sheets("Warehouse").Range("C16:E16").PasteSpecial
If Target = "1B" Then Sheets("Office").Range("AH3:AJ3").Copy: Sheets("Warehouse").Range("C16:E16").PasteSpecial
End If
Application.EnableEvents = True
End Sub
 
- 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

  • Question Question
Microsoft 365 Cpier/coller en VBA
Réponses
7
Affichages
649
Réponses
17
Affichages
2 K
Réponses
8
Affichages
907
Retour