VBA - Plusieurs conditions If

mikael2403

XLDnaute Junior
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.
 
C

Compte Supprimé 979

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

mikael2403

XLDnaute Junior
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
 

mikael2403

XLDnaute Junior
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.
 
C

Compte Supprimé 979

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

Discussions similaires

Statistiques des forums

Discussions
312 239
Messages
2 086 500
Membres
103 236
dernier inscrit
Menni