Else Sans If erreur excel

Résolu/Fermé
Riicoast - 15 mai 2015 à 14:25
ccm81 Messages postés 10850 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 mars 2024 - 15 mai 2015 à 17:50
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.

3 réponses

ccm81 Messages postés 10850 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 mars 2024 2 404
15 mai 2015 à 14:30
Bonjour
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
0
ccm81 Messages postés 10850 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 mars 2024 2 404
Modifié par ccm81 le 15/05/2015 à 14:43
Mais je crois qu'il va y avoir d'autres problèmes, dans le premier bloc, tu copies depuis la feuille "U" vers la feuille "U"
0
Merci pour ta réponse.

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.
0
ccm81 Messages postés 10850 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 mars 2024 2 404
Modifié par ccm81 le 15/05/2015 à 14:50
Worksheets("U").Range("A7:AG7").Copy
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
0
Non cette partie me convient puisque dans la ligne que j'ajoute le fait de copier la ligne au dessus (de la même feuille) me permet de garder les formules (non présente dans la feuille de base).

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".
0
ccm81 Messages postés 10850 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 mars 2024 2 404
Modifié par ccm81 le 15/05/2015 à 15:25
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
0
Celà ne fonctionne pas. J'ai beau lire et relire la macro je ne trouve pas comment ça se fait qu'elle continue de toujours copier dans la feuille "U3.
0
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.
0
ccm81 Messages postés 10850 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 mars 2024 2 404
15 mai 2015 à 17:50
De rien

Merci de mettre le sujet à Résolu (en haut à droite de ton premier message)

Bonne fin de journée
0