Déclarer en vba des fichiers ouverts

KIM

XLDnaute Accro
Bonjour le forum, bonjour les ami(e)s,
J'ouvre 2 fichiers à la fois, un fichier Source et un fichier cible. Les noms de ces fichiers suivent une règle de nommage :
- les noms fichiers Source commencent par SOURCE et sont de la forme : SOURCE???.xls (ex: SOURCE17A.xls)
- les noms des fichiers cibles se terminent par CIBL : ex CAA010-01-B-CIBL.xls

Comment positionner dans vba par la commande Set les variables ShSource et ShCible pour que la macro reconnaisse automatiquement la feuille active de chaque fichier Source et le fichier Cible et éviter de les modifer à la main à chaque ouverture de ces couples de fichiers?

Merci de votre aide
KIM
 

Pierrot93

XLDnaute Barbatruc
Re : Déclarer en vba des fichiers ouverts

Bonjour,

peut être en utilisant une variable objet "workbook" lors de l'ouverture des classeurs :
Code:
Dim wSource As Workbook
Set wSource = Workbooks.Open("monchichiersource.xls")

bon après midi
@+
 

KIM

XLDnaute Accro
Re : Déclarer en vba des fichiers ouverts

Bonjour Pierrot & le forum,
Merci pour ta réponse. Dans ma macro j'utilise déjà ce code avec le nom du fichier figé monfichiersource.xls et monfichiercible.xls. Le but est d'utiliser la même macro avec un ensemble de fichiers Source-Cible de noms différents et qui utilisent une règle unique de nommage de fichiers :

- les noms fichiers Source commencent toujours par SOURCE et sont de la forme : SOURCE???.xls (ex: SOURCE17A.xls, SOURCE20A.xls, etc.)
- les noms des fichiers cibles se terminent par toujours CIBL : ex CAA010-01-B-CIBL.xls, MJA020-00-A-CIBL.xls

Sachant bien que je n'ouvre que 2 fichiers à la fois, un fichier Source et un fichier cible.
Est-ce possible
Merci de ton aide
KIM
 

KIM

XLDnaute Accro
Re : Déclarer en vba des fichiers ouverts

Re,
J'ai voulu avancer pas à pas mais la réalité est :
Dans un répertoire donné j'ai un fichier Source de type : SOURCE???.xls. Je peux ouvrir moi meme ce fichier
A partir de ce répertoire, j'ai une arborescence multiple avec beaucoup de fichiers cibles dont le nom se termine toujours part CIBL : ex CAA010-01-B-CIBL.xls
Le but de la macro est de rechercher à partir de la racine du fichier Source chaque fichier Cible, mettre les lignes à jour par rapport au fichier Cible, sauvegarder et fermer.
Ci-joint la macro (dans le fichier SOURCE19A.xls) avec comme couple des onglets Source-Cible dans un seul fichier, et un exemble de fichier cible
Merci d'avance
KIM
 

Pièces jointes

  • SOURCE19A.xls
    52 KB · Affichages: 77
  • CAA010-01-B-CIBL.xls
    37.5 KB · Affichages: 72

Pierrot93

XLDnaute Barbatruc
Re : Déclarer en vba des fichiers ouverts

Re,

bon... pas tout compris, une boucle sur les classeurs ouverts pourrait donner ceci :
Code:
Dim wb As Workbook, wb2 As Workbook, wb3 As Workbook
For Each wb In Workbooks
    If wb2 Is Nothing Then If wb.Name Like "SOURCE*" Then Set wb2 = wb
    If wb3 Is Nothing Then If wb.Name Like "*CIBL.xls" Then Set wb3 = wb
Next wb
If wb2 Is Nothing Or wb3 Is Nothing Then MsgBox "au moins un classeur n'a pas été trouvé"
 

KIM

XLDnaute Accro
Re : Déclarer en vba des fichiers ouverts

Re,
Il n'y a pas de raison, ton code doit fonctionner pour 2 fichiers ouverts, un Source et l'autre Cible.
Pour clarifier le but recherché. Je peux ne rien ouvrir. C'est la macro qui doit ouvrir les fichiers.
A partir d'un point racine sur mon disque j'ai un seul fichier Source à partir duquel je dois mettre à jour n fichiers Cibles présents dans une arborescence sous ce point racine.
- La macro recherche un fichier Source et l'ouvre
- la macro recherche un à un les fichiers Cibles, compare les lignes, les mets à jour jusqu'au dernier fichier Cible.
Comment construire cette itération? J'en ai un nombre important de fichiers cibles.
Est-ce compréhensible?
Merci
KIM
 

Pierrot93

XLDnaute Barbatruc
Re : Déclarer en vba des fichiers ouverts

Re,

Regarde ce code, ouvre tous les classeurs dont le nom se termine par "CIBL.xls" et ce pour ceux placés dans le même répertoire du classeur dans le lequel s'exécute le code… en espérant que cela puisse t'aider à avancer…

Code:
Dim r As String, f As String, wb As Workbook
r = ThisWorkbook.Path & "\"
f = Dir(r & "*CIBL.xls")
Do While f <> ""
    Set wb = Workbooks.Open(r & f)
    'ton traitement
    wb.Close
    f = Dir
Loop
 

Discussions similaires

Statistiques des forums

Discussions
312 248
Messages
2 086 595
Membres
103 250
dernier inscrit
keks974