Lancement automatique d'une macro
seblg29
Messages postés
19
Statut
Membre
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je souhaiterais que ma macro se lance automatiquement lorsque toutes les cellules sont remplies par l'utilisateur.
J'ai écris le code suivant après avoir trouvé quelques tuto....
Cependant, celle ci ne se lance pas automatiquement...
Voyez vous ou est le problème sur ce script ?
Vous en remerciant par avance,
Sebastien
Je souhaiterais que ma macro se lance automatiquement lorsque toutes les cellules sont remplies par l'utilisateur.
J'ai écris le code suivant après avoir trouvé quelques tuto....
Private Sub Worksheet_Calculate()
Dim Fin As Boolean
Fin = True
For Each cel In Range("K13:K29")
If cel.Value = "" Then Fin = False
Next
If Fin Then Call Macro1 ' sous-entendu if fin = true
End Sub
Sub Macro1()
' Mon code ...
End sub
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICIMerci d'y penser dans tes prochains messages.Jordane45 |
Cependant, celle ci ne se lance pas automatiquement...
Voyez vous ou est le problème sur ce script ?
Vous en remerciant par avance,
Sebastien
4 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonsoir,
moi je commencerais par ajouteroption explicit
en début de module, et donc declarer toutes mes variables.
ensuite je mettrais un point d'arrêt surFin = True
, puis j'exécuterais le code en pas à pas, pour comprendre ce qui se passe. -
Bonjour,
Code à coller dans l'objet "Feuil" correspondant à ton besoinPrivate Sub Worksheet_SelectionChange(ByVal Target As Range) Dim nbCel As Integer Dim nbCnonVide As Integer Dim plg As Range Set plg = ActiveSheet.Range("K13:K29") nbCel = plg.Count nbCnonVide = Application.WorksheetFunction.CountA(plg) If nbCel = nbCnonVide Then Call Macro1 End Sub
NB : Pour poster du code sur le forum.. merci d'utiliser la coloration syntaxique (les balises de code).
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
-
Bonjour,
J'ai collé le code dans feuil1, cependant la macro 1 ne s'exécute pas lorsque toutes mes cellules sont remplies.
Y a t'il une action à réaliser pour que celle ci se lance ?
Cordialement,
Sébastien-
As tu essayé de mettre un point d'arrêt dans la macro et de la faire dérouler en mode pas à pas pour voir ce qui se passait ?
Est tu sûr que le code de ta macro1 fait quelquechose ?
Comment les données sont elle remplis ? Manuellement ? Via une autre macro ? Via des formules ????
Sinon...dépose ton fichier sur un site comme cijoint qu'on le regarde ....
Si tu as collé le code que je t'ai donné comme il faut ... ça devrait parfaitement fonctionner.
Au passage.. tu es sur quelle version d'excel (office) ? -
-
TU ne m'as pas répondu concernant les points d'arrêt .
Tu ne nous as toujours pas montré ton fichier non plus. Tu peux le mettre sur le site cijoint https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers -
-
-
-
Bonjour à tous,
tes saisies se font en B19:B20, B21:B22, etc, ce sont donc ces cellules qu'il faut superviser.
Sélectionne tes 16 cellules, nomme la plage saisie_obligatoire et :Private Sub Worksheet_Change(ByVal Target As Range) If Application.CountA([saisie_obligatoire]) = [saisie_obligatoire].Cells.Count Then MsgBox "toutes les saisies sont faites" End If End Sub
tu auras juste à modifier cette plage nommée si ton besoin évolue.
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci