XL 2013 VBA IF + Copy + Paste

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
 

Kidcarotte

XLDnaute Junior
Bonjour Youky, Bonjour Paf,

Merci pour votre aide,
Je ne comprends toujours pas car cela ne marche pas...

Je me permet de vous joindre une copie de mon fichier. Avec un peu de chance vous allez peut etre comprendre ce qui se passe

Cordialement
 

Pièces jointes

  • Parts Dimension database creation.xlsm
    81.2 KB · Affichages: 5

Paf

XLDnaute Barbatruc
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
 

youky(BJ)

XLDnaute Barbatruc
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
 

Discussions similaires

Réponses
3
Affichages
573
Réponses
7
Affichages
424
Réponses
17
Affichages
1 K

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16