Macro VBA : erreur Else sans if

Résolu
ricnoynoy Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -  
M-12 Messages postés 1332 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

1 réponse

M-12 Messages postés 1332 Date d'inscription   Statut Membre Dernière intervention   285
 
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