• Initiateur de la discussion Initiateur de la discussion jerome.ba
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

jerome.ba

Guest
Bonjour à tous, je souhaite insérer au début de mon programme une boucle if then else qui vérifie la structure de la feuille de calcul avant d'appliquer la macro (pour ne pas qu'il y ai d'erreur lié à cela par la suite dans le programme)

Le programme est écrit de façon simplifié comme cela :



If Cells(1, A).Value = "Name" Then End Sub
Else: End If


VBA ne reconnait pas End Sub et me donne une syntax error

Quelqu'un aurait-il la solution à mon problème ?

Merci beaucoup !
Jérôme
 
Re : Boucle if then else

Merci beaucoup ça fonctionne !
Mais j'aimerais mettre plusieurs conditions et j'ai encore un problème de syntaxe, je suis complètement novice en VBA :

If Cells(1, A) = "Name"
Cells(1, B) = "Cost Object Type"
Cells(1, C) = "Cost Object"
Cells(1, D) = "Description Cost Object"
Cells(1, E) = "Start date"
Cells(1, F) = "End Date"
Cells(1, G) = "Est. Act. Days"
Cells(1, H) = "Responsible Person"
Cells(1, I) = "Hide"
Cells(1, J) = "UNote"
Then MsgBox "The structure of the file is not appropriate with this program." and Exit Sub
End If

J'ai essayé de mettre les conditions sur la même ligne, sur la même ligne avec des "and" et comme c'est présenté plus haut, aucune de mes solutions ne marche.
Merci de votre aide
 
Re : Boucle if then else

Bonjour,

Si tu fais référence à la cellule A1, tu dois écrire cells(1,"A") ou cells(1,1).
Idem pour les autres cellules.
Si tu écris cells(1,A), c'est que tu fais référence à la variable A.

Cordialement.
 
Re : Boucle if then else

Bonjour Jerome, Bonjour Pierrot 🙂,

Peut-être aussi mettre les A, B, C... entre guillemets

Code:
If Cells(1, "A") = "Name" Or Cells(1, "B") = "Cost Object Type" Or _
    Cells(1, "C") = "Cost Object" Then Exit Sub

Edit : Bonjour frangy
Edit : @Pierrot : Oups, j'avais pas vu que c'était passé sans guillemets...
 
Dernière édition:
Re : Boucle if then else

Re bonjour, bonjour à tous et merci beaucoup pour vos réponses !
Vos conseils sont précieux, mais décidément je n'arrive pas à obtenir le résultat voulu. Je m'explique :
Je veux un programme qui regarde ce qu'il y a dans les cellules A1 et B1 (pour faire simple) et que s'il y a bien respectivement : Name et Cost Object Type, alors on exécute le programme en dessous, sinon je veux un msg box et après quitter le programme.

Quelqu'un a une idée? voici comment j'ai construis mon programme, ça ne bug pas, ça devrait marcher mais il n'y a rien qui s'affiche :

Code:
If Cells(1, "A") = "Name" = False And _
Cells(1, "B") = "Cost Object Type" = False _
Then
MsgBox "The structure of the file is not appropriate with this program."
Exit Sub
End If
 
Dernière modification par un modérateur:
Re : Boucle if then else

voici le code en entier :

Code:
Sub essay

If Cells(1, "A") = "Name" = False And _
Cells(1, "B") = "Cost Object Type" = False And _
Cells(1, "C") = "Cost Object" = False And _
Cells(1, "D") = "Description Cost Object" = False And _
Cells(1, "E") = "Start date" = False And _
Cells(1, "F") = "End Date" = False And _
Cells(1, "G") = "Est. Act. Days" = False And _
Cells(1, "H") = "Responsible Person" = False And _
Cells(1, "I") = "Hide" = False And _
Cells(1, "J") = "UNote" = False _
Then MsgBox "The structure of the file is not appropriate with this program"
Exit Sub
 

Pièces jointes

Re : Boucle if then else

Re,

Code:
If Cells(1, "A") = "Name" = False And
pas vraiment un code que nous t'avons donné..... pourquoi "=false" ? remplace "and" par "or".... pas ouvert ton fichier mais les fichiers xlsx ne contiennent pas de macro....
 
Re : Boucle if then else

Ah oui Pierrot93 !! J'ai remplacé par "Or" puisque l'une de ces conditions est suffisante pour l'arrêt du programme (l'équivalent de l'union en mathématiques). (Merci !)
Mais par contre, j'ai mis "false" car justement je veux continuer si j'ai la bonne structure. Donc si je n'ai pas la bonne, j'arrête.

Je commets une faute de raisonnement sur ce point ?


J'ai essayé avec ça, ça a l'air de marcher :

Code:
If Cells(1, "A") = "Name" = False Or _
Cells(1, "B") = "Cost Object Type" = False Or _
Cells(1, "C") = "Cost Object" = False Or _
Cells(1, "D") = "Description Cost Object" = False Or _
Cells(1, "E") = "Start date" = False Or _
Cells(1, "F") = "End Date" = False Or _
Cells(1, "G") = "Est. Act. Days" = False Or _
Cells(1, "H") = "Responsible Person" = False Or _
Cells(1, "I") = "Hide" = False Or _
Cells(1, "J") = "UNote" = False _
Then MsgBox "The structure of the file is not appropriate with this program. please make sure that the structure of the file is precisely as descripted" & Chr(13) & "A = Name" & Chr(13) & "B = Cost Object Type" & Chr(13) & "C = Cost Object" & Chr(13) & "D = Description Cost Object" & Chr(13) & "E = Start date" & Chr(13) & "F = End Date" & Chr(13) & "G = Est.Act.Days" & Chr(13) & "H = Responsible Person" & Chr(13) & "I = Hide" & Chr(13) & "J = UNote" & Chr(13) & "If you want to remove a row, this one must contain in the column J ""Not relevant for AGS"""
Exit Sub
 
Re : Boucle if then else

Je rectifie, ça fonctionne que si le fichier n'est pas de cette forme, lorsqu'il l'est, le programme s'arrête sans rien faire, je pense donc que le then ne prend en compte que le MSGBOX et pas le Exit sub (encore un problème de syntaxe ???)
 
Re : Boucle if then else

bonjour,
tu peux essayer :

Code:
If Cells(1, "A") <> "Name" Or Cells(1, "B") <> "Cost Object Type" Or _
Cells(1, "C") <> "Cost Object" Or Cells(1, "D") <> "Description Cost Object" Or _
Cells(1, "E") <> "Start date" Or Cells(1, "F") <> "End Date" Or _
Cells(1, "G") <> "Est. Act. Days" Or Cells(1, "H") <> "Responsible Person" Or _
Cells(1, "I") <> "Hide" Or Cells(1, "J") <> "UNote" Then 
    MsgBox "The structure of the file is not appropriate with this  program. please make sure that the structure of the file is precisely as  descripted" & Chr(13) & "A = Name" & Chr(13) & "B =  Cost Object Type" & Chr(13) & "C = Cost Object" & Chr(13)  & "D = Description Cost Object" & Chr(13) & "E = Start date"  & Chr(13) & "F = End Date" & Chr(13) & "G =  Est.Act.Days" & Chr(13) & "H = Responsible Person" & Chr(13)  & "I = Hide" & Chr(13) & "J = UNote" & Chr(13) &  "If you want to remove a row, this one must contain in the column J  ""Not relevant for AGS""":Exit Sub
dis nous si ça te convient
 
Re : Boucle if then else

bonjour francedemo et merci !

entre temps j'ai trouvé : en fait ça ne marchait pas à cause du "End if" il disait "End if without if"

J'ai juste rajouté Else et ça a marché !
Code:
 If Cells(1, "A") = "Name" = False Or _
Cells(1, "B") = "Cost Object Type" = False Or _
Cells(1, "C") = "Cost Object" = False Or _
Cells(1, "D") = "Description Cost Object" = False Or _
Cells(1, "E") = "Start date" = False Or _
Cells(1, "F") = "End Date" = False Or _
Cells(1, "G") = "Est. Act. Days" = False Or _
Cells(1, "H") = "Responsible Person" = False Or _
Cells(1, "I") = "Hide" = False Or _
Cells(1, "J") = "UNote" = False _
Then
MsgBox "The structure of the file is not appropriate for this program"
Exit Sub
Else
End If


MERCI A TOUS POUR VOTRE AIDE,
Cordialement.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
358
Réponses
2
Affichages
411
Retour