Problème de macro

dolfabio9 -  
lermite222 Messages postés 9042 Statut Contributeur -
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. m@rina Messages postés 27636 Date d'inscription   Statut Modérateur Dernière intervention   11 566
     
    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
    1
  2. dolfabio9
     
    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 !!!
    0
  3. dolfabio9
     
    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
    0
  4. dolfabio9
     
    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
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dolfabio9
     
    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
    0
  7. m@rina Messages postés 27636 Date d'inscription   Statut Modérateur Dernière intervention   11 566
     
    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
    0
  8. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
    0