XL 2016 erreur de code

AlphaOne

XLDnaute Nouveau
Bjr à tous,
en voulant insérer un msgbox, j'ai maintenant une erreur dans le code suivant, mais je ne sais pas ou ?

VB:
Sub Effacer_Données()
Dim ws As Worksheet
For Each ws In Worksheets
If MsgBox("Voulez-vous effacer toutes les données" & vbCr & " ", vbYesNo + vbExclamation, "Effacer") = vbNo Then Exit Sub

If Not (ws.Name = "Tableau" Or ws.Name = "Perf et Contre") Then
ws.Range("A200:I200").AutoFill Destination:=ws.Range("A4:I200"), Type:=xlFillDefault
Merci pour votre aide
 

wDog66

XLDnaute Occasionnel
Bonjour AlphaOne,

Lorsqu'Excel vous met une erreur la ligne qui est fautive devient jaune 🤔
Je ne comprends pas quel est votre souci pour la trouver...

Mais dans le code donné, il manque un "End If" 😜
 
Dernière édition:

AlphaOne

XLDnaute Nouveau
le voici:
VB:
Sub Effacer_Données()
Dim ws As Worksheet
For Each ws In Worksheets
If MsgBox("Voulez-vous effacer toutes les données" & vbCr & " ", vbYesNo + vbExclamation, "Effacer") = vbNo Then Exit Sub

If Not (ws.Name = "Tableau" Or ws.Name = "Perf et Contre") Then
ws.Range("A200:I200").AutoFill Destination:=ws.Range("A4:I200"), Type:=xlFillDefault
End If
Next ws
Range("F49").Select
End Sub
 

vgendron

XLDnaute Barbatruc
ton msgbox est DANS la boucle for each ws
==> tu demandes à chaque feuille
MAIS si tu réponds NON ==> tu QUITTES la macro.. donc.. fin de la boucle...

corrige avec ceci
VB:
Sub Effacer_Données()
Dim ws As Worksheet
For Each ws In Worksheets
    If Not (ws.Name = "Tableau" Or ws.Name = "Perf et Contre") Then
        If MsgBox("Voulez-vous effacer toutes les données" & vbCr & " ", vbYesNo + vbExclamation, "Effacer") = vbYes Then
            ws.Range("A200:I200").AutoFill Destination:=ws.Range("A4:I200"), Type:=xlFillDefault
        End If
    End If
Next ws
Range("F49").Select
End Sub

Je répète.. tirer une formule n'est pas effacer ...
 
Dernière édition:

vgendron

XLDnaute Barbatruc
VB:
Sub Effacer_Données()
Dim ws As Worksheet
For Each ws In Worksheets
    If Not (ws.Name = "Tableau" Or ws.Name = "Perf et Contre") Then
        If MsgBox("Voulez-vous effacer toutes les données" & vbCr & " de la feuille " &ws.name, vbYesNo + vbExclamation, "Effacer") = vbYes Then
            ws.Range("A200:I200").AutoFill Destination:=ws.Range("A4:I200"), Type:=xlFillDefault
        End If
    End If
Next ws
Range("F49").Select
End Sub

si tu as l'impression que le msgbox bloque le code parce que tu as répondu non, remplace avec cette macro.. qui modifie juste le texte du msgbox.. tu devrais comprendre

sinon, pour info.. pour débugger une macro et/ou suivre son execution pas à pas: touche F8
 

Discussions similaires

Statistiques des forums

Discussions
313 769
Messages
2 102 234
Membres
108 181
dernier inscrit
Chr1sD