Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 VBA IF + Copy + Paste

  • Initiateur de la discussion Initiateur de la discussion Kidcarotte
  • 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 !

K

Kidcarotte

Guest
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
 
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

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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Cpier/coller en VBA
Réponses
7
Affichages
787
M
Réponses
4
Affichages
942
mimich_88
M
Réponses
17
Affichages
2 K
Réponses
8
Affichages
1 K
P
  • Question Question
Réponses
3
Affichages
1 K
M
  • Question Question
Réponses
4
Affichages
1 K
MarcMad
M
R
Réponses
0
Affichages
3 K
R
Réponses
1
Affichages
989
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…