[Catégorie modifiée VB6 -> VBA] Problème évènement déclencheur macro

jeremla Messages postés 3 Date d'inscription mardi 11 octobre 2011 Statut Membre Dernière intervention 12 octobre 2011 - 11 oct. 2011 à 16:29
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 12 oct. 2011 à 13:27
Bonjour,

Je cherche une solution avec ma macro pour que celle-ci se lance automatiquement à chaque changement d'état de ma colonne B ou A.

J'ai essayé avec l'évènement "Sheetchange" mais ma macro ne tourne pas alors que si je l'affecte à un bouton elle tourne très bien.


Voici mon code :

Sub MAJ()
'Déclaration du workbook et worksheet

Application.Calculation = xlCalculationAutomatic
Dim WbS As Workbook
Dim WsSuivi As Worksheet
Dim nbLigne As Long
Dim Target As Range
' Initialisation du Workbook et Worksheet

Set WbS = Workbooks("Fichier_Suivi.xlsm")
Set WsSuivi = WbS.Worksheets("Suivi")

With Sheets("Suivi")
nbLigne = .Range("B" & .Rows.Count).End(xlUp).Row
End With

' Déclaration des compteurs

Dim i As Long
Dim k As Long

' Début de code

For i = 2 To nbLigne
Select Case WsSuivi.Cells(i, 2).Value

Case "New"
If IsEmpty(WsSuivi.Cells(i, 3)) Then
WsSuivi.Cells(i, 3) = Date
End If

Case "En cours"
If IsEmpty(WsSuivi.Cells(i, 5)) Then
WsSuivi.Cells(i, 5) = Date
End If

Case "A packager"
If IsEmpty(WsSuivi.Cells(i, 9)) Then
WsSuivi.Cells(i, 9) = Date
End If

Case "Livrée"
If IsEmpty(WsSuivi.Cells(i, 11)) Then
WsSuivi.Cells(i, 11) = Date
End If

Case "KO-En cours"
WsSuivi.Cells(i, 3) = Date

For j = 5 To 11
Cells(i, j).Value = ""
Next

End Select

Select Case WsSuivi.Cells(i, 1).Value

Case "CSC"
If IsEmpty(WsSuivi.Cells(i, 7)) Then
WsSuivi.Cells(i, 7) = Date
End If

End Select

Next

End Sub


Merci par avance pour votre aide.

6 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 228
11 oct. 2011 à 17:45
Bonjour,

Avant toute autre chose : tu développes sous VBA (le CVBA de Ewxcel) et non sous VB6 !
Prends dorénavant, s'il te plait, le plus grand soin à choisir la sectio n dans laquelle tu poses une question.

J'ai essayé avec l'évènement "Sheetchange" mais ma macro ne tourne pas alors que si je l'affecte à un bouton elle tourne très bien.

- veux-tu donc nous montrer le code que tu as écrit dans l'évènement SheetChange (depuis Sub jusqu'à End Sub, inclus)
- Présente-nous ce code en l'indentant et en utilisant les balises codes (si tu veux qu'on l'examine, hein).
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_GG72 Messages postés 94 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 30 octobre 2011
11 oct. 2011 à 19:37
Bonjour,

et qu'entends-tu par
mais ma macro ne tourne pas

Si erreur et si ton code dans Workbook_SheetChange est strictement identique à celui montré ci-dessus, tout à fait normal...

Par ailleurs, es-tu sur que le dit événement ne se déclenche pas en cascade? (vu les cellules modifiées par la procédure elle-même)?

Cordialement
0
jeremla Messages postés 3 Date d'inscription mardi 11 octobre 2011 Statut Membre Dernière intervention 12 octobre 2011
12 oct. 2011 à 10:59
Désolé pour l'erreur de section, je débute et je ne fais pas bien encore les différentes distinctions.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
MAJ
End Sub


La macro bloque avec l'état "KO-En cours".

J'aimerais qu'elle me permette de vider les cellules de la colonne 5 à 11 et de mettre la date du jour dans la colonne 5.

 Case "KO-En cours"
            WsSuivi.Cells(i, 5) = Date
        
            For j = 5 To 11
                Cells(i, j).Value = ""
                Next
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 228
12 oct. 2011 à 11:15
Quel est le format des cellules de la colonne E de ta feuille "suivi" ?

Et sur quelle feuille es-tu à ce moment ? car :
For j = 5 To 11
Cells(i, j).Value = ""
Next
modifie les cellules de la feuille active .

Et si, par ailleurs, la feuille active était la feuille "suivi" à ce moment là :
Il y aurait une contradiction en mettant
 WsSuivi.Cells(i, 5)  = Date

puis (premier tour de la boucle ci-dessus) en y mettant ""
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jeremla Messages postés 3 Date d'inscription mardi 11 octobre 2011 Statut Membre Dernière intervention 12 octobre 2011
12 oct. 2011 à 11:59
Le format de mes cellules est : Standard.

Je suis sur la même feuille : Suivi

Comment je peux faire pour annuler cette contradiction ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 228
12 oct. 2011 à 13:27
1) si tu es "sur la même feuille" ====>> dis le dans ton code
Et dans ce cas :
---- a) ton end with est à déplacedr dans :
With Sheets("Suivi")
  nbLigne = .Range("B" & .Rows.Count).End(xlUp).Row
End With
' il vient trop tôt.
----b) c'est alors :
For j = 5 To 11
 .Cells(i, j).Value "" '>>> il y a un point devant.
Next 


Quant à :
Comment je peux faire pour annuler cette contradiction ?

ce que tu veux que cela fasse ! (et qu'on ignore !). Tu es bien le seul ,à savoir si tu veux la date du jour ou rien dans ta cellule i,5 !

Ta colonne 5 de ta feuille suivi, enfin, devrait être formatée pour ce qu'elle doiit recevoir ! (des dates, apparemment ?)
Que veux-tu que je te dise d'autre !
Et il semble bien en aller de même pour d'autres colonnes, dont la colonne C, la colonne G, la colonne I et la colonne K !
Mais là, vois-tu, ce n'est plus uniquement un problème de code, mais également un problème de conception (et tu es bien le seul à savoir ce que tu conçois)

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0