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

4 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    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
  3. seblg29 Messages postés 19 Statut Membre
     
    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
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      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
    2. seblg29 Messages postés 19 Statut Membre
       
      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
    3. seblg29
       
      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
    4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > seblg29
       
      j'ai testé, et cela semble fonctionner dès que K29 est rempli.
      0
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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