Problème de macro

Fermé
dolfabio9 - 26 oct. 2008 à 15:51
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 26 oct. 2008 à 18:33
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.
A voir également:

7 réponses

m@rina Messages postés 21263 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 17 janvier 2025 11 379
26 oct. 2008 à 15:59
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
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
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
m@rina Messages postés 21263 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 17 janvier 2025 11 379
26 oct. 2008 à 18:27
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
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
26 oct. 2008 à 18:33
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