Nom de fichier qui change : Problème d'importation

ouali

XLDnaute Junior
Bonjour,

J'ai un petit souci. J'ai un fichier modèle qui s'appelle SaisieM1.xlsm. Dans ce fichier, je viens y coller des feuillets venant d'autres fichiers. Jusqu'ici tout se passe bien.

Mon problème est que : Le fichier SaisieM1.xlsm est un modèle et plusieurs fichier von être créer un partir de ce modèle. Don pour chaque utilisateur, la première chose à faire est de renommer ce fichier afin de pouvoir remplir la saisie. Or dans mon code VBA, je viens copier un feuillet dans ce classeur et comme le nom du fichier est modifié il ne le reconnait pas !!

Quelqu'un peut-il m'aider ?? Je pensais utiliser les ** et appelés mon fichier toujours SaisieM1_quelqquchose.xlsm, mais ca ne marche pas

Voici le bout de code :

Sub Importe_Libellé()
Application.DisplayAlerts = False

Dim x As Integer
Dim G As Integer
'Ouverture du fichier Libelle_objet_M1.xls
Workbooks.Open Filename:= _
"P:\DEP_TEC_ELECTRICITE\SPCC\02_Etudes_et_Projets\05_Automates_M1\Libelle_objet_M1.xlsx"
' Tout sélectionner et copier
Range("A2:E900").Select
Selection.Copy
' On retourne dans le fichier de saisie M1 et on sélectionne le feuillet Libelle
Windows("*SaisieM1.xlsm*").Activate
With Sheets("Libelle")
.Select
.Range("A1").Select
End With
' Copie de tous les éléments contenu dans la librairie
ActiveSheet.Paste
' Fermeture du fichier source Libellé_ObjectText.csv
Windows("Libelle_objet_M1.xlsx").Activate
Application.CutCopyMode = False
Workbooks("Libelle_objet_M1.xlsx").Close


Et Merci d'avance pour votre aide

Ouali
 

Papou-net

XLDnaute Barbatruc
Re : Nom de fichier qui change : Problème d'importation

Bonjour ouali,

Je ne suis pas catégorique, mais il me semble que si tu remplaces le nom du classeur par l'indice de la fenêtre, cela devrait résoudre ton problème.

Ex :

Code:
Windows("*SaisieM1.xlsm*").Activate

à remplacer par

Code:
Windows(1).Activate

L'indice de la fenêtre devrait correspondre à l'ordre d'ouverture des classeurs.

Espérant avoir été utile.

Cordialement.
 
G

Guest

Guest
Re : Nom de fichier qui change : Problème d'importation

Bonjour,

Peut-être que quelquechose comme ceci te conviendrait:
Mettre le nom du fichier en A1 de Libellé puis
Code:
Sub Importe_Libellé()
    Const Repretoire = "P:\DEP_TEC_ELECTRICITE\SPCC\02_Etudes_et_Projets\ 05_Automates_M1\"
    Dim NomFichier As String
    NomFichier = Sheets("Libelle").Range("A1")
    Sheets("Libelle").ClearContents
    If Dir(repertoire & NomFichier, vbDirectory) <> "" Then
        Application.DisplayAlerts = False
        Dim x As Integer
        Dim G As Integer
        'Ouverture du fichier Libelle_objet_M1.xls
        Workbooks.Open Filename:=repertoire & NomFichier
        'Suite de la procédure
    Else
        MsgBox "fichier: " & NomFichier & " introuvable!", vbExclamation, "Importe_Libellé"
    End If
End Sub

A+
 

ouali

XLDnaute Junior
Re : Nom de fichier qui change : Problème d'importation

Bonjour,

Tout d'abord merci a vous deux !!

Je n'aime pas trop ta solution Papou-net car on a souvent plusieurs fichiers Excel ouverts et on peut vite se tromper alors je dois dire que si il y a une autre solution je préférerai.

Quant à la soluton de Hasco sincérement je ne comprend pas trop ce que le code fait pourrais-tu me le commenter un peu.

Bon si jamais je fais déjà une vérification à l'ouverture de mon fichier SaisieM1 si les librairies existent grâce a ce code
Private Sub Workbook_Open()

Dim fso As Variant
'
'Importation de la librairie des libellé et ses mnémoniques dans le fichier de saisie des signaux des automates M1
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists("P:\DEP_TEC_ELECTRICITE\SPCC\02_Etudes_et_Projets\02_Etudes\05_StreamX\StreamTools\Librairies\Libellé_ObjectText.csv") = True Then
Call Importe_Libellé
Call Importe_Champ
Call Importe_Ouvrage
Call Importe_Comportement

MsgBox "Ordinateur connecté au serveur, les différentes librairies ont été mises à jour"

Else
MsgBox "Ordinateur non connecté au serveur, les différentes librairies n'ont pas été mises à jour"
End If

Ce que je ne comprend pas c'est que la où tu écris suite de la procédure je dois remettre mon code ms qui contient de nouveau la ligne : Windows("*SaisieM1.xlsm*").Activate

Alors le problème est toujours présent non ?? Si je change le nom de mon fichier SaiseM1.xlsm cela ne marchera pas ??

Désolé mais j'ai pas tout compris au code
 

chris

XLDnaute Barbatruc
Re : Nom de fichier qui change : Problème d'importation

Bonjour
Où se trouve le code ? Dans SaisieM1.xlsm ? Si oui on peux récupérer le nom du classeur en début de code.
Sinon une boucle sur le nombre de fenêtres ouvertes avec recherche dans le nom de la fenêtre de "SaisieM1" permettrait de trouver la bonne si, comme tu l'envisageais, ton nom reste bien SaisieM1 suivi d'un préfixe.
 
G

Guest

Guest
Re : Nom de fichier qui change : Problème d'importation

Re,

De retour. J'avais pas compris ton problème.

Si le fichier non reconnu est celui qui contient la macro. tu peux y faire référence dans le code par ThisWorkBook.

Par Exemple au lieu de 'Windows("*SaisieM1.xlsm*").Activate
tu pourras mettre ThisWorkBook.activate.

Code:
Sub Importe_Libellé()
    Application.DisplayAlerts = False
    Dim x As Integer
    Dim G As Integer
    'Ouverture du fichier Libelle_objet_M1.xls
    Workbooks.Open Filename:= _
                   "P:\DEP_TEC_ELECTRICITE\SPCC\02_Etudes_et_Projets\ 05_Automates_M1\Libelle_objet_M1.xlsx"
    ' Tout sélectionner et copier
    Range("A2:E900").Select
    Selection.Copy
    ' On retourne dans le fichier de saisie M1 et on sélectionne le feuillet Libelle
  ThisWorkbook.Activate
 
    With Sheets("Libelle")
        .Select
        .Range("A1").Select
    End With
    ' Copie de tous les éléments contenu dans la librairie
    ActiveSheet.Paste
    ' Fermeture du fichier source Libellé_ObjectText.csv
    Windows("Libelle_objet_M1.xlsx").Activate
    Application.CutCopyMode = False
    Workbooks("Libelle_objet_M1.xlsx").Close

A+
 

ouali

XLDnaute Junior
Re : Nom de fichier qui change : Problème d'importation

Salut Chris

Oui le code se trouve dans SaisieM1.xlsm. Il s'agit d'un classeur pour saisir des données et à l'ouverture de ce classeur, des librairies sont chargés d'un autre classeur dans un feuillet du fichier SaisieM1.

Cela me semble une bonne idée de récupérer le nom du fichier à son ouverture. Mais comment puis-je le faire ??

Et après tu penses que ca joue si je rentre ce nom du fichier dans une variable du genre "Nomfichier" et qu'après j'écrive
Windows("Nomfichier.xlsm").Activate ou Windows("Nomfichier").Activate ?

Merci pour ton aide
 

ouali

XLDnaute Junior
Re : Nom de fichier qui change : Problème d'importation

Salut Hasco

Pas de soucis mais il me semblait bien que ton code ne répondait pas à mes besoins ;) Par contre ta solution : ThisWorkbook.Activate
marche très bien et je t'en remercie déjà un problème de résolu.

Par contre pour Chris je veux bien savoir quand même comment récupérer le nom du fichier au cas où ;)

Bonne journée à tout le monde
 

Hippolite

XLDnaute Accro
Re : Nom de fichier qui change : Problème d'importation

Bonjour à tous,

Heureusement que j'ai lu jusqu'au bout pour ne pas répéter la même chose que Hasco.

J'ajouterai juste une précision pour ceux qui n'y sont pas rodés :
ThisWorkbook fait référence au classeur contenant la macro en cours,
à ne pas confondre avec
ActiveWorkbook qui fait référence au classeur actif, et dont l'dentité peut devenir "incertaine" en cas de macros s'appelant depuis différents fichiers.

Bonne journée
 

ouali

XLDnaute Junior
Re : Nom de fichier qui change : Problème d'importation

Bonjour,

Et merci a Hasco et Hippolite pour vos précisions bien utiles.

Est-ce qu'il y a un moyen de dire que la discussion est terminé enfin que la réponse à la question du départ est posée ??

Bonne journée a tous
 

Discussions similaires

Statistiques des forums

Discussions
312 296
Messages
2 086 967
Membres
103 411
dernier inscrit
jamjam6767