Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA - Plusieurs conditions If

  • Initiateur de la discussion Initiateur de la discussion mikael2403
  • 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 !

M

mikael2403

Guest
Bonjour,

J'ai créé la macro suivante qui ne fonctionne pas.
Je souhaites ajouter plusieurs conditions mais ça bugg. Avec 1 condition ça fonctionne parfaitement.

Lorsque j'exécute la macro ci-dessous j'ai le message :
Erreur d'exécution "9"
L'indice n'appartient pas à la sélection.

Code:
If Sheets("Accueil").Range("B9:J9") = "Assistance Clients" And y <> "" Then
    Do
        y = Dir("T:\PROPALE\ASSISTANCE CLIENTS" & Format(Date, "yymmdd") & " - " & x & " - " & m + 1 & ".xls")
        m = m + 1
    Loop While y <> ""
    ActiveWorkbook.SaveAs Filename:="T:\PROPALE\ASSISTANCE CLIENTS" & Format(Date, "yymmdd") & " - " & x & " - " & m & ".xls", _
    FileFormat:=xlNormal, Password:="", WriteResPassword:="PROPALE", ReadOnlyRecommended:=True, CreateBackup:=False
Else
    ActiveWorkbook.SaveAs Filename:="T:\PROPALE\ASSISTANCE CLIENTS" & Format(Date, "yymmdd") & " - " & x & ".xls", _
    FileFormat:=xlNormal, Password:="", WriteResPassword:="PROPALE", ReadOnlyRecommended:=True, CreateBackup:=False
End If
If Sheets("Accueil").Range("B9") = "Acquisition & développement" And z <> "" Then
    Do
        z = Dir("T:\PROPALE\ACQ & DEV" & Format(Date, "yymmdd") & " - " & x & " - " & m + 1 & ".xls")
        m = m + 1
    Loop While y <> ""
    ActiveWorkbook.SaveAs Filename:="T:\PROPALE\ACQ & DEV" & Format(Date, "yymmdd") & " - " & x & " - " & m & ".xls", _
    FileFormat:=xlNormal, Password:="", WriteResPassword:="PROPALE", ReadOnlyRecommended:=True, CreateBackup:=False
Else
    ActiveWorkbook.SaveAs Filename:="T:\PROPALE\ACQ & DEV" & Format(Date, "yymmdd") & " - " & x & ".xls", _
    FileFormat:=xlNormal, Password:="", WriteResPassword:="PROPALE", ReadOnlyRecommended:=True, CreateBackup:=False
End If

Y-a-t-il une erreur dans mon code ou ai-je oublié quelque chose ?
J'ai essayé pleins de solutions mais c'est toujorus la même chose.

Merci d'avance pour votre aide.
 
Re : VBA - Plusieurs conditions If

Bonsoir Mikael2403,

Ceci n'est pas normal
Code:
If Sheets("Accueil").Range("[COLOR=red][B]B9:J9[/B][/COLOR]")=

Que veux-tu tester !?
Il ne peut s'agir que d'une seule cellule, même si les cellules sont fusionnée.

A+
 
Re : VBA - Plusieurs conditions If

Bonjour,

En effet je me suis trompé dans le nom de la cellule. Le bon code est ci-dessous mais maintenant j'ai un autre message d'erreur qui me dit :
Erreur de compilation
Else sans If
Il me surligne le 2e Else.

Comment puis-je mettre plusieurs conditions ?
En fait, je veux que si dans la cellule M24 il y a Assistance Clients mon tableau se sauvegarde dans le dossier ASSISTANCE CLIENTS et s'il y a Acquisition & Developement, il s'enregistre dans le dossier ACQ & DEV.
Dans les 2 cas, il faut, qu'avant de l'enregistrer, l'on véfie qu'un fichier de même nom n'existe pas.
Au final il y a 2 conditions et dans chacune de ces conditions, il y en a une autre.

Je n'arrive pas à trouver l'erreur et comment corriger mon code.

Merci d'avance pour votre aide.

Code:
If Sheets("Propale").Range("M24").Value = "Assistance Clients" And y <> "" Then
    Do
        y = Dir("T:\PROPALE\ASSISTANCE CLIENTS" & Format(Date, "yymmdd") & " - " & x & " - " & m + 1 & ".xls")
        m = m + 1
    Loop While y <> ""
    ActiveWorkbook.SaveAs Filename:="T:\PROPALE\ASSISTANCE CLIENTS" & Format(Date, "yymmdd") & " - " & x & " - " & m & ".xls", _
    FileFormat:=xlNormal, Password:="", WriteResPassword:="PROPALE", ReadOnlyRecommended:=True, CreateBackup:=False
Else
    ActiveWorkbook.SaveAs Filename:="T:\PROPALE\ASSISTANCE CLIENTS" & Format(Date, "yymmdd") & " - " & x & ".xls", _
    FileFormat:=xlNormal, Password:="", WriteResPassword:="PROPALE", ReadOnlyRecommended:=True, CreateBackup:=False
Else
If Sheets("Propale").Range("M24") = "Acquisition & développement" Then
If z <> "" Then
    Do
        z = Dir("T:\PROPALE\ACQ & DEV" & Format(Date, "yymmdd") & " - " & x & " - " & m + 1 & ".xls")
        m = m + 1
    Loop While y <> ""
    ActiveWorkbook.SaveAs Filename:="T:\PROPALE\ACQ & DEV" & Format(Date, "yymmdd") & " - " & x & " - " & m & ".xls", _
    FileFormat:=xlNormal, Password:="", WriteResPassword:="PROPALE", ReadOnlyRecommended:=True, CreateBackup:=False
Else
    ActiveWorkbook.SaveAs Filename:="T:\PROPALE\ACQ & DEV" & Format(Date, "yymmdd") & " - " & x & ".xls", _
    FileFormat:=xlNormal, Password:="", WriteResPassword:="PROPALE", ReadOnlyRecommended:=True, CreateBackup:=False
End If
End If
End If
 
Re : VBA - Plusieurs conditions If

Voici la macro initiale qui fonctionne parfaitement.

Code:
If y <> "" Then
    Do
        y = Dir("T:\PROPALE\" & Format(Date, "yymmdd") & " - " & x & " - " & m + 1 & ".xls")
        m = m + 1
    Loop While y <> ""
    ActiveWorkbook.SaveAs Filename:="T:\PROPALE\" & Format(Date, "yymmdd") & " - " & x & " - " & m & ".xls", _
    FileFormat:=xlNormal, Password:="", WriteResPassword:="PROPALE", ReadOnlyRecommended:=True, CreateBackup:=False
Else
    ActiveWorkbook.SaveAs Filename:="T:\PROPALE\" & Format(Date, "yymmdd") & " - " & x & ".xls", _
    FileFormat:=xlNormal, Password:="", WriteResPassword:="PROPALE", ReadOnlyRecommended:=True, CreateBackup:=False
End If

C'est sur ce code que je souhaites rajouter une conditions.

Dois-je changer toute la macro ou puis-je ajouter des conditions entre les lignes de ce code ?
Je ne sais pas si je suis clair dans mes explications. Ce n'est pas compliqué de visu mais plus compliqué à expliquer 🙂.

Merci encore.
 
Re : VBA - Plusieurs conditions If

Salut Mickael2403,

En reprenant ton ancienne procédure qui fonctionnait très bien,
et en ajoutant l'idée de changement de chemin, voilà le code
Code:
' Selon la valeur saisie dans la cellule M24
' Le chemin d'accès du fichier change
If Sheets("Propale").Range("M24").Value = "Assistance Clients" Then
  VPath = "T:\PROPALE\ASSISTANCE CLIENTS\"
ElseIf Sheets("Propale").Range("M24") = "Acquisition & développement" Then
  VPath = "T:\PROPALE\ACQ & DEV\"
Else
  VPath = ""
End If
' Si le chemin d'accès n'est pas vide
' Donc la valeur saisie en M24 a été reconnue
If VPath <> "" Then
  ' Ancienne procédure qui fonctionne très bien
  ' Alors, pourquoi en changer ;-)
  If y <> "" Then
    Do
      y = Dir(VPath & Format(Date, "yymmdd") & " - " & x & " - " & m + 1 & ".xls")
      m = m + 1
    Loop While y <> ""
    ActiveWorkbook.SaveAs Filename:=VPath & Format(Date, "yymmdd") & " - " & x & " - " & m & ".xls", _
    FileFormat:=xlNormal, Password:="", WriteResPassword:="PROPALE", ReadOnlyRecommended:=True, CreateBackup:=False
  Else
    ActiveWorkbook.SaveAs Filename:=VPath & Format(Date, "yymmdd") & " - " & x & ".xls", _
    FileFormat:=xlNormal, Password:="", WriteResPassword:="PROPALE", ReadOnlyRecommended:=True, CreateBackup:=False
  End If
End If

A+
 
- 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

V
Réponses
17
Affichages
3 K
VBgalère
V
Réponses
2
Affichages
769
L
Réponses
1
Affichages
1 K
Ludwig74
L
S
Réponses
0
Affichages
948
S
T
Réponses
0
Affichages
1 K
T
P
  • Question Question
Réponses
3
Affichages
1 K
Y
Réponses
0
Affichages
1 K
Y
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…