Else Sans If erreur excel
Résolu
Riicoast
-
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis entrain de faire une base de données dans excel.
J'essaye tant bien que mal de faire une macro me permettant de copier une ligne ajoutée sur ma première feuille, dans une autre feuille et ce sous condition.
Mon but est :
- Si la ligne 8 la cellule colonne 5 = "U" alors elle est copiée dans la feuille "U".
- Si la ligne 8 la cellule colonne 5 = "I" alors elle est copiée dans la feuille "I".
- Si la ligne 8 la cellule colonne 5 = "L" alors elle est copiée dans la feuille "L".
Je dois avoir une erreur dans la rédaction de la macro, je ne la trouve pas. Lors de l'excécution l'erreur "Else sans If" s'affiche.
Voici la partie de ma macro actuelle qui me pause problème :
If Cells(8, 5).Value = "U" Then
With Worksheets("U").Range("A7:AG7")
.Offset(1).Insert xlShiftDown, True
Worksheets("U").Range("A7:AG7").Copy
Worksheets("U").Range("A8:AG8").PasteSpecial xlPasteAll
Worksheets("U").Cells(8, 1).Value = TextBox1
ElseIf Cells(8, 5).Value = "I" Then
With Worksheets("I").Range("A7:AG7")
.Offset(1).Insert xlShiftDown, True
Worksheets("I").Range("A7:AG7").Copy
Worksheets("I").Range("A8:AG8").PasteSpecial xlPasteAll
Worksheets("I").Cells(8, 1).Value = TextBox1
ElseIf Cells(8, 5).Value = "L" Then
With Worksheets("L").Range("A7:AG7")
.Offset(1).Insert xlShiftDown, True
Worksheets("L").Range("A7:AG7").Copy
Worksheets("L").Range("A8:AG8").PasteSpecial xlPasteAll
Worksheets("L").Cells(8, 1).Value = TextBox1
End If
End With
End Sub
Dasn l'attente d'une réponse.
Je vous remercie.
Je suis entrain de faire une base de données dans excel.
J'essaye tant bien que mal de faire une macro me permettant de copier une ligne ajoutée sur ma première feuille, dans une autre feuille et ce sous condition.
Mon but est :
- Si la ligne 8 la cellule colonne 5 = "U" alors elle est copiée dans la feuille "U".
- Si la ligne 8 la cellule colonne 5 = "I" alors elle est copiée dans la feuille "I".
- Si la ligne 8 la cellule colonne 5 = "L" alors elle est copiée dans la feuille "L".
Je dois avoir une erreur dans la rédaction de la macro, je ne la trouve pas. Lors de l'excécution l'erreur "Else sans If" s'affiche.
Voici la partie de ma macro actuelle qui me pause problème :
If Cells(8, 5).Value = "U" Then
With Worksheets("U").Range("A7:AG7")
.Offset(1).Insert xlShiftDown, True
Worksheets("U").Range("A7:AG7").Copy
Worksheets("U").Range("A8:AG8").PasteSpecial xlPasteAll
Worksheets("U").Cells(8, 1).Value = TextBox1
ElseIf Cells(8, 5).Value = "I" Then
With Worksheets("I").Range("A7:AG7")
.Offset(1).Insert xlShiftDown, True
Worksheets("I").Range("A7:AG7").Copy
Worksheets("I").Range("A8:AG8").PasteSpecial xlPasteAll
Worksheets("I").Cells(8, 1).Value = TextBox1
ElseIf Cells(8, 5).Value = "L" Then
With Worksheets("L").Range("A7:AG7")
.Offset(1).Insert xlShiftDown, True
Worksheets("L").Range("A7:AG7").Copy
Worksheets("L").Range("A8:AG8").PasteSpecial xlPasteAll
Worksheets("L").Cells(8, 1).Value = TextBox1
End If
End With
End Sub
Dasn l'attente d'une réponse.
Je vous remercie.
A voir également:
- Vba else sans if
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
- Dépassement de capacité vba ✓ - Forum Excel
3 réponses
Bonjour
Essaies comme ceci
Cdlmnt
Essaies comme ceci
If Cells(8, 5).Value = "U" Then
With Worksheets("U").Range("A7:AG7")
.Offset(1).Insert xlShiftDown, True
Worksheets("U").Range("A7:AG7").Copy
Worksheets("U").Range("A8:AG8").PasteSpecial xlPasteAll
Worksheets("U").Cells(8, 1).Value = TextBox1
End With
ElseIf Cells(8, 5).Value = "I" Then
With Worksheets("I").Range("A7:AG7")
.Offset(1).Insert xlShiftDown, True
Worksheets("I").Range("A7:AG7").Copy
Worksheets("I").Range("A8:AG8").PasteSpecial xlPasteAll
Worksheets("I").Cells(8, 1).Value = TextBox1
End With
ElseIf Cells(8, 5).Value = "L" Then
With Worksheets("L").Range("A7:AG7")
.Offset(1).Insert xlShiftDown, True
Worksheets("L").Range("A7:AG7").Copy
Worksheets("L").Range("A8:AG8").PasteSpecial xlPasteAll
Worksheets("L").Cells(8, 1).Value = TextBox1
End With
End If
End Sub
Cdlmnt
Bizarre!
Mets le contenu de E8 dans une variable
NF = Cells(8,5).Value
puis
If NF= "U" Then
etc ...
Tu mets un point d'arrêt (clic sir le bord de la fenêtre code) devant la ligne NFR = et tu exécutes ta procédure en pas à pas et tu contrôles la valeur de NF
Mets le contenu de E8 dans une variable
NF = Cells(8,5).Value
puis
If NF= "U" Then
etc ...
Tu mets un point d'arrêt (clic sir le bord de la fenêtre code) devant la ligne NFR = et tu exécutes ta procédure en pas à pas et tu contrôles la valeur de NF
Je viens de faire autrement, et ça a fonctionné.
Puisque j'utilise des textbox d'un userform je n'ai pas mis la reférence de la cellule mais de la textbox. ça me donne du coup :
If Textbox5 = "I" then...
ElseIf textbox5 ="U" then...
Etc..
En tout cas un grand merci à toi de m'avoir aidé. Si un autre problème apparait je sais ou te trouver ;)
Merci.
Puisque j'utilise des textbox d'un userform je n'ai pas mis la reférence de la cellule mais de la textbox. ça me donne du coup :
If Textbox5 = "I" then...
ElseIf textbox5 ="U" then...
Etc..
En tout cas un grand merci à toi de m'avoir aidé. Si un autre problème apparait je sais ou te trouver ;)
Merci.
Effectivement maintenant je n'ai plus l'erreur qui s'affiche.
Écrivant très rarement du vba ça m'étonnera toujours la précision qu'il faut avoir à l'espace près.
Cependant comme tu le dis il y a une ou plusieurs autres erreurs puisque malgré cela même si dans la cellule E8 il y a "L" ou "I" cela me copie la ligne dans la feuille U.
Ici, si j'ai compris, il te faut mettre la feuille origine au lieu de la feuille "U" ou pas de nom de feuille si la feuille origine est la feuille active
Mon problème réside mainteant dans le fait que même lorsque sur ma feuille de base j'ai "I" dans la cellule E8 la suite se produit quand même dans la feuille "U" alors que cela devrait se faire sur la feuille "I".