Macro VBA : erreur Else sans if

Résolu/Fermé
ricnoynoy Messages postés 15 Date d'inscription jeudi 25 avril 2019 Statut Membre Dernière intervention 3 mai 2019 - 25 avril 2019 à 12:45
M-12 Messages postés 1333 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 8 avril 2023 - 25 avril 2019 à 13:00
Bonjour,

Je ne parviens pas à résoudre mon problème de else sans if. (j'ai pourtant bien un saut de ligne après chaque "then", des elseif,des end with, end if que je pense bien placé.

Excel me note l'erreur "else sans if" au niveau du premier elseif avec ("cabriot").

Ma macro sert à copier le contenu de 4 textbox(textbox10,20,30,40,50) d'un userform en fonction du textbox20 et à les coller dans l'onglet correspondant à textbox20 puis à les coller dans l'onglet "récap" sans condition puis à trier toutes les lignes des colonnes de A à I de "récap" par date du plus ancien au plus récent (colonne C).

Voici ma macro :

Private Sub CommandButton1_Click()


If TextBox20.Value = "Ansot" Then
With Sheets("ANSOT")
With .Cells(.Rows.Count, "A").End(xlUp)(2)
.Value = TextBox10
.Offset(0, 1).Value = TextBox20
.Offset(0, 2).Value = TextBox30
.Offest(0, 3).Value = TextBox40
.Offest(0, 4).Value = TextBox50
End With

ElseIf TextBox20.Value = "Cabriot" Then
With Sheets("CABRIOT")
With .Cells(.Rows.Count, "A").End(xlUp)(2)
.Value = TextBox10
.Offset(0, 1).Value = TextBox20
.Offset(0, 2).Value = TextBox30
.Offest(0, 3).Value = TextBox40
.Offest(0, 4).Value = TextBox50
End With

ElseIf TextBox20.Value = "Hellere" Then
With Sheets("HELLERE")
With .Cells(.Rows.Count, "A").End(xlUp)(2)
.Value = TextBox10
.Offset(0, 1).Value = TextBox20
.Offset(0, 2).Value = TextBox30
.Offest(0, 3).Value = TextBox40
.Offest(0, 4).Value = TextBox50
End With

ElseIf TextBox20.Value = "JM" Then
With Sheets("JM")
With .Cells(.Rows.Count, "A").End(xlUp)(2)
.Value = TextBox10
.Offset(0, 1).Value = TextBox20
.Offset(0, 2).Value = TextBox30
.Offest(0, 3).Value = TextBox40
.Offest(0, 4).Value = TextBox50
End With

ElseIf TextBox20.Value = "Julien" Then
With Sheets("JULIEN")
With .Cells(.Rows.Count, "A").End(xlUp)(2)
.Value = TextBox10
.Offset(0, 1).Value = TextBox20
.Offset(0, 2).Value = TextBox30
.Offest(0, 3).Value = TextBox40
.Offest(0, 4).Value = TextBox50
End With

ElseIf TextBox20.Value = "Lhote" Then
With Sheets("LHOTE")
With .Cells(.Rows.Count, "A").End(xlUp)(2)
.Value = TextBox10
.Offset(0, 1).Value = TextBox20
.Offset(0, 2).Value = TextBox30
.Offest(0, 3).Value = TextBox40
.Offest(0, 4).Value = TextBox50
End With

ElseIf TextBox20.Value = "Luc" Then
With Sheets("LUC")
With .Cells(.Rows.Count, "A").End(xlUp)(2)
.Value = TextBox10
.Offset(0, 1).Value = TextBox20
.Offset(0, 2).Value = TextBox30
.Offest(0, 3).Value = TextBox40
.Offest(0, 4).Value = TextBox50
End With

ElseIf TextBox20.Value = "Marc" Then
With Sheets("MARC")
With .Cells(.Rows.Count, "A").End(xlUp)(2)
.Value = TextBox10
.Offset(0, 1).Value = TextBox20
.Offset(0, 2).Value = TextBox30
.Offest(0, 3).Value = TextBox40
.Offest(0, 4).Value = TextBox50
End With

ElseIf TextBox20.Value = "Marine" Then
With Sheets("MARINE")
With .Cells(.Rows.Count, "A").End(xlUp)(2)
.Value = TextBox10
.Offset(0, 1).Value = TextBox20
.Offset(0, 2).Value = TextBox30
.Offest(0, 3).Value = TextBox40
.Offest(0, 4).Value = TextBox50
End With

ElseIf TextBox20.Value = "Pierre" Then
With Sheets("PIERRE")
With .Cells(.Rows.Count, "A").End(xlUp)(2)
.Value = TextBox10
.Offset(0, 1).Value = TextBox20
.Offset(0, 2).Value = TextBox30
.Offest(0, 3).Value = TextBox40
.Offest(0, 4).Value = TextBox50

End With
End If

With .Sheets("RECAP")
With .Cells(.Rows.Count, "A").End(xlUp)(2)
.Value = TextBox10
.Offset(0, 1).Value = TextBox20
.Offset(0, 2).Value = TextBox30
.Offest(0, 3).Value = TextBox40
.Offest(0, 4).Value = TextBox50
Range("C13:C65000").Select
Selection.Sort Key1:=Range("C13"), Order1:=xlAscending
Sheets("ENTREE FACTURE").Select
End With
End Sub


Merci d'avance à tous.

1 réponse

M-12 Messages postés 1333 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 8 avril 2023 299
Modifié le 25 avril 2019 à 13:02
Bonjour,

Regarde un peu ta procédure,
tu as un IF
suivi de deux WITH
et un seul END WITH
rajoute un END WITH et cela devrait aller
et corrigeant également les OFFSET
1