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

XL 2013 Automatic macro ne fonctionne pas

Kidcarotte

XLDnaute Junior
Bonjour a tous
Je rencontre quelques difficultes avec ma macro, je suis a la recherche de suggestion
elle sera attachee dans le post

J'ai donc trois macro automatique:
- La premiere etant un curseur de couleur jaune
- la deuxieme etant une fonction if. If A3 = No packaging then A4 = 0

le probleme est que les macros automatique ne marche plus du tout, et je ne comprend pas pourquoi

Je suis ouverte a toute vos suggestions

Merci a tous
 

Pièces jointes

  • Parts Dimension database creation.xlsm
    85.9 KB · Affichages: 9

Kidcarotte

XLDnaute Junior
Bonjour Daniel

J'ai la macro en debut sur ma worksheet, mais ce ne marche toujours pas.
la premiere execution marche, mais apres si je clique sur le bouton "clear", il y a marque mismatch, sauf que je ne vois pas ou ni pourquoi puisqu'elle s'est execute parfaitement la premiere fois

cordialement
 

Kidcarotte

XLDnaute Junior
D'accord je vais essaye d'etre plus claire. Je reposte le fichier excel ici -
1) La feuille qui m'interesse est la feuille numero 1 qui s'appelle Warehouse ( je m'excuse par avance pour le manque d'accent j'ecris avec un Qwerty)
2) Lorsque l'on va dans la fonction developer -> Macro on arrive sur la fenetre VBA ou l'on peut manuellement taper le code.
3) Dans l'onglet a gauche, il y a le titre -> VBA project -> Microsoft Excel Objects -> Feuille 1 (Warehouse)

Dedans j'ai ecris deux macro automatique
VB:
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("E5")) Is Nothing Then

Application.EnableEvents = False

If Target = "No packaging" Then Range("A5:D5").Copy Range("A8")

[...]

Application.EnableEvents = True

End If

If Not Intersect(Target, Range("B16")) Is Nothing Then

If Target = "1A" Then Sheets("Office").Range("AI2:AK2").Copy: Sheets("Warehouse").Range("C16:E16").PasteSpecial

End If

End Sub



Private Sub Worksheet_SelectionChange(ByVal Target As Range)

lig = Target.Row

Cells(2, 4).Value = Date

If Not Intersect(Selection, [A1:Z100]) Is Nothing Then

[A1:Z100].Interior.ColorIndex = xlNone

ActiveCell.Interior.ColorIndex = 6

End If

End Sub


Jusqu'a la tout fonctionnait, mais depuis que j'ai rajoute la deuxieme condition de IF ( IF Not Intersect B16), cela ne marche plus.
C'est a dire que lorsque j'ouvre le fichier, tout fonctionne comme prevu, sauf que lorsque j'appuie sur le bouton "clear" de la feuille Warehouse
"Run time error 13 type mismatch"
Je clique sur debug, et (jai accroche un screenshot en docs) et je ne comprends pas comment cette erreure est generee. Je ne vois pas ou est le probleme.

J'espere que c'est comprehensible maintenant
 

Pièces jointes

  • Parts Dimension database creation.xlsm
    86.1 KB · Affichages: 2
  • mon erreur.PNG
    20.1 KB · Affichages: 5

danielco

XLDnaute Accro
La macro plante sur la ligne :
VB:
If Target = "No packaging" Then Range("A5:D5").Copy Range("A8")
Comme Target représente une plage de plusieurs cellules, si tu veux tester la valeur de la première cellule, il faut mettre:
Code:
If Target(1).Value = "No packaging" Then Range("A5:D5").Copy Range("A8")
et pareil sur les lignes suivantes. Maintenant, pour ne pas déclencher l'évènement WorkSheet_Change, mets :
Code:
Sub Clear()
'
' Clear Macro
'
Application.EnableEvents = False
Set S1 = Worksheets("Warehouse")
S1.Range("A2:G2, A5:F5, A8:I8, B11:H16, A19:D19").ClearContents
Application.EnableEvents = True
End Sub

Daniel
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Une syntaxe un chouia plus courte
VB:
Sub Clear()
Application.EnableEvents = False
Worksheets("Warehouse").Range("A2:G2, A5:F5, A8:I8, B11:H16, A19:D19") = Empty
Application.EnableEvents = True
End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…