Excel VBA Code pour ne pas éxécuter la macro

Résolu
Bonjour à tous,

Dans une macro, je suis amené à ne pas "lancer" la macro si une condition n'est pas remplie.
Je suis donc à la recherche d'un code pour ne pas que la suite s'exécute...je ne sais pas si je suis très clair, vous pouvez me questionner :)

merci pour votre aide, cela fait 2 jours que je galère !!

gfv

5 réponses

  1. Application.EnableEvents = False
    Workbooks.Open "C:\Temp\LeClasseurQuiContientWorkbook_Open.xls"
    Application.EnableEvents = True
    1. en effet, j'ai trouvé...le problème que j'avais est résolu avec une condition If Then Else.

      J'ai calé après le If ma condition, après le Then je lance une Box avec le petit message qui va bien, et après le Else je lance le code plus haut et le tour est joué !

      Je vous remercie pour votre aide qui m'est précieuse.

      Si quelqu'un veux le code complet :

      ligne = ActiveCell.Row
      col = ActiveCell.Column 'définition de la cellule active

      If Cells(ligne, 37) = "XXX" Then
      Application.Run ("boite") 'affiche une box si l'insertion n'est pas au bon endroit et n'exécute pas l'insertion

      Else
      Const plage = "A8:BC16"
      Dim li As Long, nbli As Long
      nbli = Range(plage).Rows.Count
      Selection.Offset(0, 0).Select
      For li = 1 To nbli
      ActiveCell.EntireRow.Insert
      Next li
      Range(plage).Copy
      ActiveSheet.Paste 'copier et insertion des cellules de la plage définie

      plage2 = "J12:U12"
      Range(plage2).Copy
      Selection.Offset(13, 9).Select
      ActiveSheet.Paste 'copier et coller des cellules de la plage(2) définie - pour les formules

      End If

      voilà, voilà :)

      gfv
      1. Salut,

        Il suffit de mettre une conditionnelle si en VBA IF

        Si tu en dis plus sur ta conditionnelle on pourra t'écrire un code
        1. bonjour g, voici mon code :

          Sub Macro4()

          Const plage = "A8:BC16"
          Dim li As Long, nbli As Long
          nbli = Range(plage).Rows.Count
          Selection.Offset(0, 0).Select
          For li = 1 To nbli
          ActiveCell.EntireRow.Insert
          Next li
          Range(plage).Copy
          ActiveSheet.Paste

          plage2 = "J12:U12"
          Range(plage2).Copy
          Selection.Offset(13, 9).Select
          ActiveSheet.Paste

          End Sub

          gfv
          1. Je suppose que la suite qui ne doit pas s'exécuter est

            plage2 = "J12:U12"
            Range(plage2).Copy
            Selection.Offset(13, 9).Select
            ActiveSheet.Paste

            mais à quelle condition ?
        2. Bonjour,

          If, Then, Else....

          Mais sans ton code et ta condition ce ne va pas être facile d'être plus précis.

          Bonne journée.