Erreur dans une maccro

Bonsoir à tous,

J' ai un pb dans une maccro qui me paraissait simple, mais toutes les fois que j'execute la macro, elle bloque avec un message 'Erreur d'execution '1004'...

Private Sub CommandButton1_Click()

'Reset: remet à zéro, supprime les codes articles (*2), les commandes et NB (*2), les prix et la date .

If MsgBox("Etes-vous certain de vouloir supprimer toutes les commandes ?", vbOKCancel, "Demande de confirmation") = vbOK Then
Range("Tableau4[[C3]:[C25]]").Select
Selection.ClearContents
Range("F6:X6").Select
Selection.ClearContents
Sheets("Com Cas Part").Select
Range("Tableau42[[C3]:[C25]]").Select
Selection.ClearContents
Range("F6:X6").Select
Selection.ClearContents
Range("F8").Select
Sheets("Articles & Tarifs").Select
Range("I4:I41").Select
Selection.ClearContents
Range("M2:P2").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "."
Sheets("Commandes").Select
Range("F8").Select
ActiveWorkbook.RefreshAll

Sheets("Commandes").Select
MsgBox "Pensez à enregistrer sous un nouveau nom (ou nouvelle date)." & Chr(10) & Chr(10) & "En cas d'erreur, si vous souhaitiez conserver les précédentes données, fermez le logiciel en choisissant de NE PAS ENREGISTRER. Les données précédentes seront conservées."

End If

End Sub

J'ai essayé d'y tourner dans tous les sens, mais je ne trouve pas de solution...

Si qq un peut m'aider, je prends volontiers!

Merci!

Je ne peux pas vous faire suivre le fichier complet pr cause de confidentialité...

Et mon pb est à la ligne:

" Range("Tableau42[[C3]:[C25]]").Select "

Merci!

Cordalement,

bonjour,

la plage de tableau 4, c'est quoi ? Et elle se trouve dans quelle feuille ?

Si c'est celle du command button, essayez Me.Range("Tableau4[[C3]:[C25]]").Select

qi moi, je comprend bien ce que vous voulez faire, c'est dans cette plage à partir de la ligne 3 et colonne 3 vers ligne 25 colonne 3, c'est ça ?

Bonsoir,

Avec mes excuses je ne vois votre réponse que ce soir... Et merci pour la réponse!

Alors, j'ai essayé "Me.range..." et cela ne change rien, désolée...

Le commandbutton est en effet sur la même feuille que le tableau4, mais c'est à partir du tableau 42 que cela déconne (tab 42 qui n'est pas sur la même feuille par contre...).

Si vous avez une piste de réflexion, je prends volontiers... Merci!!

Et c'est de la colonne 3 à 25 que je veut remettre à zéro chaque cellule. Il y a 700 lignes. Dans chaque tableau, le 4 et le 42.

Merci pour vos retours

re,

Est-ce possible de mettre un fichier anonymisé en PJ ?

Fichier en PJ.

J'ai supprimé pas mal de choses, j'espère que ça ne nuira pas à votre lecture...

Cdt

6anonyme.xlsm (198.69 Ko)

re,

votre macro se trouve dans le module de la feuille "Commandes" et ne comprend pas le range, si cela se trouve dans une autre feuille, donc il faut préciser cela. Si vous déplacez la macro vers un module normal, vous n'aurez pas de problèmes. Il faut le savoir. Donc ici, pour le tableau42, j'ai ajouté un "With...End With"-construction avec la feuille "Com Cas Part" et maintenant, la macro comprend "Tableau42".

Je ne sais pas si vous connaissez bien ces "With...End With"-constructions, le point en face de "Range" est vraiment important.

PS. il faut éviter tous ces "Select", cela ne sert à rien et ralentit la macro.

Private Sub CommandButton1_Click()

     'Reset: remet à zéro, supprime les codes articles (*2), les commandes et NB (*2), les prix et la date .

     If MsgBox("Etes-vous certain de vouloir supprimer toutes les commandes ?", vbOKCancel, "Demande de confirmation") = vbOK Then

          With Me                            'dans la feuille de cette module
               .Range("Tableau4[[C3]:[C25]]").ClearContents
               .Range("F6:X6").ClearContents
          End With

          With Sheets("Com Cas Part")
               .Range("Tableau42[[C3]:[C25]]").ClearContents   '>>>> le tableau42 qui se trouve dans la feuille "Com Cas Part"
               .Range("F6:X6").ClearContents
          End With

          With Sheets("Articles & Tarifs")
               .Range("I4:I41").ClearContents
               .Range("M2:P2").ClearContents
               'ActiveCell.FormulaR1C1 = "." '???? que voulez-vous faire
          End With

          Application.Goto Me.Range("F8"), 1
          ActiveWorkbook.RefreshAll

          MsgBox "Pensez à enregistrer  sous un nouveau nom (ou nouvelle date)."

     End If

End Sub

Pétard!!

Comment vous remercier...? Je prends bonne note de tous les détails (with... end with, .range, et select), et en effet, la macro est bien plus rapide!

Cela me resservira sans aucun doute!

J'apprends chaque fois que je viens sur ce forum... Un grand merci!

Cdt

merci pour les compléments. Est-ce que vous l'avez essayé en déplaçant la macro vers un module normal au lieu d'un module d'une feuille et que tout fonctionne sans modification ?

Bonjour,

zut, je ne vois votre message qu'aujourd'hui...

Alors non, je ne l'ai pas déplacée vers un module normal, je l'ai laissée dans le module de la feuille... Comme c'est un commandbutton, je n'ai pas osé... Et puis ça marche super, alors...

Comme je maîtrise très peu, quand ça marche je ne touche plus à rien!!! trop novice pr m'aventurer hors de mes sentiers...

Rechercher des sujets similaires à "erreur maccro"