Lancement automatique d'une macro

Fermé
seblg29 Messages postés 19 Date d'inscription lundi 9 mars 2015 Statut Membre Dernière intervention 31 janvier 2019 - Modifié le 28 déc. 2017 à 00:13
yg_be Messages postés 22905 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 juin 2024 - 2 janv. 2018 à 16:01
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....

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 :ICI

Merci 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
A voir également:

4 réponses

yg_be Messages postés 22905 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 juin 2024 1 480
28 déc. 2017 à 00:05
bonsoir,
moi je commencerais par ajouter
option explicit
en début de module, et donc declarer toutes mes variables.
ensuite je mettrais un point d'arrêt sur
Fin = True
, puis j'exécuterais le code en pas à pas, pour comprendre ce qui se passe.
1
jordane45 Messages postés 38212 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 juin 2024 4 678
28 déc. 2017 à 00:12
Bonjour,

Code à coller dans l'objet "Feuil" correspondant à ton besoin
Private 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
0
seblg29 Messages postés 19 Date d'inscription lundi 9 mars 2015 Statut Membre Dernière intervention 31 janvier 2019
Modifié le 28 déc. 2017 à 14:32
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
0
jordane45 Messages postés 38212 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 juin 2024 4 678
28 déc. 2017 à 14:37
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) ?
0
seblg29 Messages postés 19 Date d'inscription lundi 9 mars 2015 Statut Membre Dernière intervention 31 janvier 2019
28 déc. 2017 à 16:12
La macro1 fonctionne parfaitement, celle ci se trouve dans le module 1.
J'ai collé le code comme vous me l'aviez conseillé dans Microsoft Excel Object : Feuil1.
Cependant, la zone devant être non vide sont des "formules" : =SI(E26="";"";E26).
Je travaille sous Excel 2010.
0
jordane45 Messages postés 38212 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 juin 2024 4 678
28 déc. 2017 à 16:35
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
0
Bonjour,

Excusez moi pour ma réponse tardive.
En effet, j'ai essayé de mettre des points d'arrêt.
Voici le lien vers le fichier :
https://www.cjoint.com/c/HAckQnQabkH

Encore merci pour votre aide.

Cdt,
0
yg_be Messages postés 22905 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 juin 2024 1 480 > seblg29
2 janv. 2018 à 11:53
j'ai testé, et cela semble fonctionner dès que K29 est rempli.
0
eriiic Messages postés 24584 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 18 juin 2024 7 225
Modifié le 2 janv. 2018 à 15:29
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
0