Workbooks.Open à 1 condition

Bonjour à tous,

J'ai une macro qui ouvre des fichiers en passant par un “chemin” renseigné à la cellule “J9”, (puis ensuite, elle importe des données depuis une application).

Objectif: A partir d’un tableau (dans l’onglet “Parametres), je souhaite que la macro ouvre UNIQUEMENT les fichiers qui sont en “OUI” (colonne A).

Le nom de ces fichiers commencent toujours par : "Fiche de sport - " puis "nom du sport est variable, plage B10:B24 ".

J’ai essayé plusieurs exemple de VBA, mais sans succès, soit la macro plante soit elle ouvre tous les fichiers ( je suis un pur débutant) :

If Range("A" & no_metier + 9).Value = "OUI" Then
 NomFichier = "Fiche de sport - " & Range("B10:B24") & ".xls"
  Workbooks.Open Filename:=Cells(9, 10) & NomFichier
   Workbooks.Open Filename:=NomFichier

Si vous me permettez, je vous transmets le fichier Excel en question, son VBA et une capture d'écran d'un exemple.

En vous souhaitant une bonne réception.

Cher internaute, je vous serai reconnaissant pour le temps que vous allez ’m'accorder, je vous remercie à l'avance pour votre aide.

Ci-dessus le VBA actuel (il ouvre tout les fichiers) :

Sub SPORT()
Dim fichier As String, chemin As String
Dim Wb As Workbook
chemin = Range("J9").Value & "\"
fichier = Dir(chemin & "\*.xls") 

Do While fichier <> "" 'faire pour tous les fichiers du dossier
Set Wb = Workbooks.Open(chemin & fichier) 'ouvrir le fichier
   Sheets(2).Activate  'se positionner sur la feuille 2
    Application.Run ("ImportWorkSheet") 'importation des données
    ActiveWorkbook.SaveAs chemin & fichier, FileFormat:="56" 'enregistrer le fichier
    Wb.Close 'fermer le fichier
    Set Wb = Nothing 'la variable ne fait plus référence au fichier fermé
    fichier = Dir 'lit le fichier suivant dans le dossier
Loop

End Sub
sans titre

Bonjour,

il faudrait enlever un des \ car il est présent sur les 2 variables chemin et fichier

chemin = Range("J9").Value & "\" 'chemin des fichiers à renseigner à la cellule "J9"
fichier = Dir(chemin & "\*.xls")

Ok, c'est fait. (le problème se situe pas à ce niveau de VBA).

Bonjour,

je ne comprend pas cette ligne,

NomFichier = "Fiche de sport - " & Range("E10:E24") & ".xls"

peut tu m'expliquer ce que tu essai de faire avec cette commande ?

Le but était de dire à Excel d'ouvrir uniquement les fichiers en "OUI" en mettant NomFichier = "Fiche de sport - " & Range("E10:E24") & ".xls

Mais ca n'a pas marché

mais je ne voie pas le rapport entre le nom des fichiers à ouvrir et les chiffres inscrit dans la plage "E10:E24" ?

C'est une erreur et je l'ai corrigé, c'est ... Range("B10:B24") & ".xls"

Mais ça change rien .

re,

ça serait plutôt,

If Range("A" & no_metier + 9).Value = "OUI" Then
 NomFichier = "Fiche de sport - " & Range("B" & no_metier + 9).Value & ".xls"

D'accord, je mets comme ça tu penses ?

Do While fichier <> "" 'faire pour tous les fichiers du dossier
If Range("A" & no_metier + 9).Value = "OUI" Then
 NomFichier = "Fiche de sport - " & Range("B" & no_metier + 9).Value & ".xls"
Loop

je n'avais pas mit le reste des lignes de commande, car je croyais que le problème était seulement de bien ciblé le nom du fichier,

mais s'il n'y a que l'ouverture du fichier à faire dans la boucle, il ne faut pas oublier le End If

Do While fichier <> "" 'faire pour tous les fichiers du dossier
  If Range("A" & no_metier + 9).Value = "OUI" Then
     NomFichier = "Fiche de sport - " & Range("B" & no_metier + 9).Value & ".xls"
  End if
Loop

J'ai fait comme ça, mais ça plante excel :

Sub SPORT()
Dim fichier As String, chemin As String
Dim Wb As Workbook
Dim no_sport As Integer

chemin = Range("J9").Value & "\"
fichier = Dir(chemin & "\*.xls")  ' POUR LA MACRO 1&2

Do While fichier <> "" 'faire pour tous les fichiers du dossier
  If Range("A" & no_sport + 9).Value = "OUI" Then
     NomFichier = "Fiche de sport - " & Range("B" & no_sport + 9).Value & ".xls"
      Workbooks.Open Filename:=NomFichier

        Sheets(2).Activate  'se positionner sur la feuille 2
        Application.Run ("ImportWorkSheet") 'importation des données
        ActiveWorkbook.SaveAs chemin & fichier, FileFormat:="56"
      Wb.Close 'fermer le fichier
    Set Wb = Nothing 'la variable ne fait plus référence au fichier fermé
    fichier = Dir 'lit le fichier suivant dans le dossier

  End If
Loop
End Sub

re,

si tu connais d'avance les fichiers à ouvrir, tu n'a pas besoin de faire une boucle sur tous les fichiers d'un répertoire,

seulement une boucle sur la plage A10:A24

Sub SPORT()
Dim fichier As String, chemin As String
Dim Wb As Workbook
Dim no_sport As Integer

chemin = Range("J9").Value & "\"

For i = 10 To Cells(Rows.Count, 1).End(xlUp).Row
  If Range("A" & no_sport + 9).Value = "OUI" Then

      NomFichier = "Fiche de sport - " & Range("B" & no_sport + 9).Value & ".xls"
      Workbooks.Open Filename:=chemin & NomFichier

        Sheets(2).Activate  'se positionner sur la feuille 2
        Application.Run ("ImportWorkSheet") 'importation des données
        ActiveWorkbook.SaveAs chemin & fichier, FileFormat:="56"

      Wb.Close 'fermer le fichier
    Set Wb = Nothing 'la variable ne fait plus référence au fichier fermé
    fichier = Dir
  End If
 Next i
End Sub

Salut SabV, Si j'ai bien compris, j'ai enlevé la boucle et j'ai exécuté le VBA suivant. Mais ça donne rien (aucune action et aucun message d'Excel).

Sub SPORT()
Dim chemin As String
Dim Wb As Workbook
Dim no_sport As Integer

chemin = Range("J9").Value & "\"

For i = 10 To Cells(Rows.Count, 1).End(xlUp).Row
  If Range("A" & no_sport + 9).Value = "OUI" Then
      NomFichier = "Fiche de sport - " & Range("B" & no_sport + 9).Value & ".xls"
      Workbooks.Open Filename:=chemin & NomFichier

          Sheets(2).Activate 
          Application.Run
        ActiveWorkbook.SaveAs chemin & fichier, FileFormat:="56"
      Wb.Close
    Set Wb = Nothing

  End If
 Next i
End Sub
Rechercher des sujets similaires à "workbooks open condition"