Problème de macro

Bonjour,

un amis, m'a créé un fichier excel afin de m'aider dans mon activité quotidienne de vétérinaire rurale.
ce fichier est exellent, mais il contient 4 macros, qui ne fonctionnent pas, et je ne comprends absolument rien
à la programmation visual basic.

j'aurais donc souhaité me mettre en contact avec un cador du visual basic afin de résoudre et débugger la phrase qui ne va pas dans ma ligne de commande.

je spécifit " me mettre en contact" car si je pouvais eviter de mettre mon fichier en pièce jointe sur le forum, çà m'arrangerais bien.

j'espère trouvé un passionné qui puisse me donner un coup de pouce ou tout au moins m'aiguiller pour que jy parvienne de moi même.
Configuration: Windows Vista
Internet Explorer 7.0
office 2007 professionel

7 réponses

  1. Contributeur
    Bonjour,
    Je veux bien y jeter un coup d'oeil, tu met ton classeur sur cjoint.com et tu met le lien donner dans un MP, de cette facon il ne serra pas disponnible sur le web à moins d'avoir le lien.
    A+
    EDIT: mais pour ça tu doit t'inscrire comme membre
    1. Modérateur
      Bonsoir,

      Tes macros sont très amateur... Sans regarder de très près, les macro passent leur temps à faire des protect, et unprotec, et de sélectionner.
      VBA n'a aucunement besoin de sélectionner pour exécuter une action !

      Déjà, la ligne
      Sheets("saisie totale").Activate

      ne sert à rien

      Question : tes feuilles sont protégées, leur as-tu mis un mot de passe ?

      Personnellement, je n'ai pas beaucoup de temps en ce moment, mais le mieux est que tu nous dises ce que tu souhaites faire exactement avec tes macros ? AMHA, c'est à refaire...

      m@rina
      1. le problème se situerai au niveau de la ligne 19, en partant du bas :

        Sub Affiche_tout()

        Sheets("saisie totale").Activate
        Sheets("saisie totale").Unprotect
        On Error GoTo gesterror
        ActiveSheet.ShowAllData
        Sheets("saisie totale").Protect DrawingObjects:=True, Contents:=True, _
        Scenarios:=True
        gesterror:
        End Sub
        1. voici ma ligne de commande en Visual basic, qui à l'air de déconner:

          Sub recopie()
          nettoyer
          Sheets("saisie pour calcul").Unprotect
          Sheets("saisie pour calcul").Activate
          ActiveSheet.Protect DrawingObjects:=True, Contents:=True, _
          Scenarios:=True
          Sheets("saisie totale").Activate
          If Sheets("saisie totale").OptionButtons("crit1") = xlOn Then p = "$A$2:$l$3"
          If Sheets("saisie totale").OptionButtons("crit2") = xlOn Then p = "$A$2:$l$4"
          If Sheets("saisie totale").OptionButtons("crit3") = xlOn Then p = "$A$2:$l$5"
          Affiche_tout
          Sheets("saisie totale").Unprotect
          Range("m:v").Delete
          Range("A6:l16384").AdvancedFilter Action:=xlFilterCopy, _
          CriteriaRange:=Range(p), CopyToRange:=Columns("M:x"), _
          Unique:=False
          Range("m16384").Select
          Selection.End(xlUp).Select 'trouve la dernière ligne remplie
          l = Selection.Row
          Sheets("saisie pour calcul").Unprotect
          Sheets("saisie totale").Range("M2:x" & l).Copy
          Sheets("saisie pour calcul").Cells(2, 1).PasteSpecial Paste:=xlValues, Operation:= _
          xlNone, SkipBlanks:=False, Transpose:=False
          Sheets("saisie totale").Range("M:x").Delete
          Range("a3").Select
          Sheets("saisie pour calcul").Activate
          If l <> 1 Then
          Range("n2:bg" & l).FillDown:
          Range("bi2:bj" & l).FillDown:
          Range("be2:bf" & l).Select:
          Selection.Copy:
          Range("bg2:bh" & l).Select:
          Selection.PasteSpecial Paste:=xlValues, Operation:= _
          xlNone, SkipBlanks:=False, Transpose:=False:
          Range("n3:be" & l).Select:
          Selection.Copy:
          Selection.PasteSpecial Paste:=xlValues, Operation:= _
          xlNone, SkipBlanks:=False, Transpose:=False
          Range("bi3:bj" & l).Select:
          Selection.Copy:
          Selection.PasteSpecial Paste:=xlValues, Operation:= _
          xlNone, SkipBlanks:=False, Transpose:=False
          End If
          Sheets("saisie totale").Protect DrawingObjects:=True, Contents:=True, _
          Scenarios:=True
          max_echelle
          Sheets("saisie pour calcul").Activate
          Range("a2").Select
          Sheets("saisie pour calcul").Protect DrawingObjects:=True, Contents:=True, _
          Scenarios:=True
          Sheets("Calcul").Activate
          Range("a1").Select
          End Sub

          Sub nettoyer()
          Sheets("saisie pour calcul").Unprotect
          Sheets("saisie pour calcul").Activate
          Range("a3:bj16384").ClearContents
          ActiveSheet.Protect DrawingObjects:=True, Contents:=True, _
          Scenarios:=True
          Sheets("saisie totale").Activate
          End Sub

          Sub trie_avancé()
          Sheets("saisie totale").Activate
          Affiche_tout
          trie
          Sheets("saisie totale").Unprotect
          Range("a6:l16000").Select
          MsgBox ("Très important !!! L'option 'Ligne de titres' doit être sur 'Oui' sinon celles-ci sont détruites,")
          Application.Dialogs(xlDialogSort).Show
          Sheets("saisie totale").Protect DrawingObjects:=True, Contents:=True, _
          Scenarios:=True
          End Sub

          Sub trie()
          Sheets("saisie totale").Activate
          Sheets("saisie totale").Unprotect
          Range("A6:l16384").Select
          Selection.Sort Key1:=Range("A6"), Order1:=xlAscending, Key2:= _
          Range("B6"), Order2:=xlAscending, Header:=xlYes, _
          OrderCustom:=1, MatchCase:=False, Orientation:= _
          xlTopToBottom
          Sheets("saisie totale").Protect DrawingObjects:=True, Contents:=True, _
          Scenarios:=True
          Sheets("saisie totale").Protect DrawingObjects:=True, Contents:=True, _
          Scenarios:=True
          End Sub

          Sub Aperçu_filtre()
          Sheets("saisie totale").Activate
          Sheets("saisie totale").Unprotect
          If Sheets("saisie totale").OptionButtons("crit1") = xlOn Then p = "$A$2:$l$3"
          If Sheets("saisie totale").OptionButtons("crit2") = xlOn Then p = "$A$2:$l$4"
          If Sheets("saisie totale").OptionButtons("crit3") = xlOn Then p = "$A$2:$l$5"
          Range("A6:l16384").AdvancedFilter Action:=xlFilterInPlace, _
          CriteriaRange:=Range(p), Unique:=False
          Sheets("saisie totale").Protect DrawingObjects:=True, Contents:=True, _
          Scenarios:=True
          End Sub

          Sub nouvelle_saisie()
          Affiche_tout
          Sheets("saisie totale").Activate
          Sheets("saisie totale").Unprotect
          Rows("7:7").Select
          Selection.Insert Shift:=xlDown
          Rows("8:8").Select
          Selection.Copy
          Rows("7:7").Select
          Selection.PasteSpecial Paste:=xlFormats, Operation:= _
          xlNone, SkipBlanks:=False, Transpose:=False
          Sheets("saisie totale").Protect DrawingObjects:=True, Contents:=True, _
          Scenarios:=True
          End Sub

          Sub Affiche_tout()

          Sheets("saisie totale").Activate
          Sheets("saisie totale").Unprotect
          On Error GoTo gesterror
          ActiveSheet.ShowAllData
          Sheets("saisie totale").Protect DrawingObjects:=True, Contents:=True, _
          Scenarios:=True
          gesterror:
          End Sub

          Sub recherche_erreur(l)
          For i = 14 To 19
          For j = 2 To l
          v = Cells(j, i).Value
          If Cells(j, i).Value > 100 Then
          MsgBox ("Valeur négative: les calculs effectués ne seront pas cohérents")
          Cells(j, i).Select
          End If
          Next j
          Next i
          End Sub

          merci de m'aiguiller, je ne vois pas du tout par ou commencer

          merci
          1. voici ma ligne de commande en Visual basic, qui à l'air de déconner:

            Sub recopie()
            nettoyer
            Sheets("saisie pour calcul").Unprotect
            Sheets("saisie pour calcul").Activate
            ActiveSheet.Protect DrawingObjects:=True, Contents:=True, _
            Scenarios:=True
            Sheets("saisie totale").Activate
            If Sheets("saisie totale").OptionButtons("crit1") = xlOn Then p = "$A$2:$l$3"
            If Sheets("saisie totale").OptionButtons("crit2") = xlOn Then p = "$A$2:$l$4"
            If Sheets("saisie totale").OptionButtons("crit3") = xlOn Then p = "$A$2:$l$5"
            Affiche_tout
            Sheets("saisie totale").Unprotect
            Range("m:v").Delete
            Range("A6:l16384").AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=Range(p), CopyToRange:=Columns("M:x"), _
            Unique:=False
            Range("m16384").Select
            Selection.End(xlUp).Select 'trouve la dernière ligne remplie
            l = Selection.Row
            Sheets("saisie pour calcul").Unprotect
            Sheets("saisie totale").Range("M2:x" & l).Copy
            Sheets("saisie pour calcul").Cells(2, 1).PasteSpecial Paste:=xlValues, Operation:= _
            xlNone, SkipBlanks:=False, Transpose:=False
            Sheets("saisie totale").Range("M:x").Delete
            Range("a3").Select
            Sheets("saisie pour calcul").Activate
            If l <> 1 Then
            Range("n2:bg" & l).FillDown:
            Range("bi2:bj" & l).FillDown:
            Range("be2:bf" & l).Select:
            Selection.Copy:
            Range("bg2:bh" & l).Select:
            Selection.PasteSpecial Paste:=xlValues, Operation:= _
            xlNone, SkipBlanks:=False, Transpose:=False:
            Range("n3:be" & l).Select:
            Selection.Copy:
            Selection.PasteSpecial Paste:=xlValues, Operation:= _
            xlNone, SkipBlanks:=False, Transpose:=False
            Range("bi3:bj" & l).Select:
            Selection.Copy:
            Selection.PasteSpecial Paste:=xlValues, Operation:= _
            xlNone, SkipBlanks:=False, Transpose:=False
            End If
            Sheets("saisie totale").Protect DrawingObjects:=True, Contents:=True, _
            Scenarios:=True
            max_echelle
            Sheets("saisie pour calcul").Activate
            Range("a2").Select
            Sheets("saisie pour calcul").Protect DrawingObjects:=True, Contents:=True, _
            Scenarios:=True
            Sheets("Calcul").Activate
            Range("a1").Select
            End Sub

            Sub nettoyer()
            Sheets("saisie pour calcul").Unprotect
            Sheets("saisie pour calcul").Activate
            Range("a3:bj16384").ClearContents
            ActiveSheet.Protect DrawingObjects:=True, Contents:=True, _
            Scenarios:=True
            Sheets("saisie totale").Activate
            End Sub

            Sub trie_avancé()
            Sheets("saisie totale").Activate
            Affiche_tout
            trie
            Sheets("saisie totale").Unprotect
            Range("a6:l16000").Select
            MsgBox ("Très important !!! L'option 'Ligne de titres' doit être sur 'Oui' sinon celles-ci sont détruites,")
            Application.Dialogs(xlDialogSort).Show
            Sheets("saisie totale").Protect DrawingObjects:=True, Contents:=True, _
            Scenarios:=True
            End Sub

            Sub trie()
            Sheets("saisie totale").Activate
            Sheets("saisie totale").Unprotect
            Range("A6:l16384").Select
            Selection.Sort Key1:=Range("A6"), Order1:=xlAscending, Key2:= _
            Range("B6"), Order2:=xlAscending, Header:=xlYes, _
            OrderCustom:=1, MatchCase:=False, Orientation:= _
            xlTopToBottom
            Sheets("saisie totale").Protect DrawingObjects:=True, Contents:=True, _
            Scenarios:=True
            Sheets("saisie totale").Protect DrawingObjects:=True, Contents:=True, _
            Scenarios:=True
            End Sub

            Sub Aperçu_filtre()
            Sheets("saisie totale").Activate
            Sheets("saisie totale").Unprotect
            If Sheets("saisie totale").OptionButtons("crit1") = xlOn Then p = "$A$2:$l$3"
            If Sheets("saisie totale").OptionButtons("crit2") = xlOn Then p = "$A$2:$l$4"
            If Sheets("saisie totale").OptionButtons("crit3") = xlOn Then p = "$A$2:$l$5"
            Range("A6:l16384").AdvancedFilter Action:=xlFilterInPlace, _
            CriteriaRange:=Range(p), Unique:=False
            Sheets("saisie totale").Protect DrawingObjects:=True, Contents:=True, _
            Scenarios:=True
            End Sub

            Sub nouvelle_saisie()
            Affiche_tout
            Sheets("saisie totale").Activate
            Sheets("saisie totale").Unprotect
            Rows("7:7").Select
            Selection.Insert Shift:=xlDown
            Rows("8:8").Select
            Selection.Copy
            Rows("7:7").Select
            Selection.PasteSpecial Paste:=xlFormats, Operation:= _
            xlNone, SkipBlanks:=False, Transpose:=False
            Sheets("saisie totale").Protect DrawingObjects:=True, Contents:=True, _
            Scenarios:=True
            End Sub

            Sub Affiche_tout()

            Sheets("saisie totale").Activate
            Sheets("saisie totale").Unprotect
            On Error GoTo gesterror
            ActiveSheet.ShowAllData
            Sheets("saisie totale").Protect DrawingObjects:=True, Contents:=True, _
            Scenarios:=True
            gesterror:
            End Sub

            Sub recherche_erreur(l)
            For i = 14 To 19
            For j = 2 To l
            v = Cells(j, i).Value
            If Cells(j, i).Value > 100 Then
            MsgBox ("Valeur négative: les calculs effectués ne seront pas cohérents")
            Cells(j, i).Select
            End If
            Next j
            Next i
            End Sub

            merci de m'aiguiller, je ne vois pas du tout par ou commencer

            merci
            1. re bonjour,

              eh bien enfait pour ce qui est de mon amis, il ne peut pas m'aider, car on s'est un peu embrouillé, bref cette option là est bloqué.... no comment

              oui j'ai un message d'erreur:

              run-time error 2147319784 '-(80028018)':
              method 'activate' of object '_worksheet' failed

              mais peut être puis-je vous envoyer mon fichier, par le moyen de votre choix

              merci du coup de main en tout cas !!!
              1. Modérateur
                Bonjour,

                Avant tout, tu peux peut être nous dire si tu as un message d'erreur... Est-ce que la macro s'arrête sur une ligne particulière ?

                Et aussi, as-tu pensé à activer les macros ? Et à mettre ta sécurité sur Moyen, et pas sur Elevé (Menu Macro, Sécurité). Si c'est ça, redémarre Excel ensuite.

                Euh... et ton ami, il sait pas corriger ?... ;))

                m@rina