Excel VBA : test fichier nom variable ouvert
Résolu/Fermé
Eaheru
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
-
22 nov. 2011 à 19:36
Eaheru Messages postés 197 Date d'inscription mercredi 23 juin 2010 Statut Membre Dernière intervention 12 mars 2018 - 23 nov. 2011 à 18:24
Eaheru Messages postés 197 Date d'inscription mercredi 23 juin 2010 Statut Membre Dernière intervention 12 mars 2018 - 23 nov. 2011 à 18:24
A voir également:
- Excel VBA : test fichier nom variable ouvert
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Déplacer une colonne excel - Guide
- Excel compter cellule couleur sans vba - Guide
5 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
23 nov. 2011 à 02:01
23 nov. 2011 à 02:01
Bonjour,
1°) il faut renseigner le chemin complet du fichier, par exemple...
C:\monRepertoire1\monRepertoire2\utilisation_novembre.xlsx
Nous somme en novembre, si tu veux avoir le mois de novembre tu met
MaVar = FichOuvert()
Mais si tu veux avoir par exemple février tu met
MaVar = FichOuvert(2)
Bien sur tu dois continuer l'énumération des mois et mettre le ou les répertoire(s) pour avoir le chemin complet.
A+
1°) il faut renseigner le chemin complet du fichier, par exemple...
C:\monRepertoire1\monRepertoire2\utilisation_novembre.xlsx
Function FichOuvert(Optional Mois As Integer = 0) As Boolean Dim TB Dim F As String Dim Wk As Workbook TB = Array("Janvier", "Fevrier", "Mars") 'Etc.. If Mois = 0 Then 'Le fichier du mois actuel F = "C:\monRepertoire1\utilisation_" & TB(Month(Now)) & ".xlsx" Else 'Le fichier du mois sélectionner F = "C:\monRepertoire1\utilisation_" & TB(Mois) & ".xlsx" End If On Error Resume Next Set Wk = Workbooks(F) On Error GoTo 0 FichOuvert = Not Wk Is Nothing End Function
Nous somme en novembre, si tu veux avoir le mois de novembre tu met
MaVar = FichOuvert()
Mais si tu veux avoir par exemple février tu met
MaVar = FichOuvert(2)
Bien sur tu dois continuer l'énumération des mois et mettre le ou les répertoire(s) pour avoir le chemin complet.
A+
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
Modifié par lermite222 le 23/11/2011 à 03:25
Modifié par lermite222 le 23/11/2011 à 03:25
Bon, là ça fonctionne
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Function FichOuvert(Optional Mois As Integer = 0) As Boolean Dim fich As Integer Dim F As String dim TB TB = Array(" ", "Janvier", "Fevrier", "Mars") 'Etc.. If Mois = 0 Then 'Le fichier du mois actuel F = "C:\monRepertoire1\utilisation_" & TB(Month(Now)) & ".xlsx" Else 'Le fichier du mois sélectionner F = "C:\monRepertoire1\utilisation_" & TB(Mois) & ".xlsx" End If On Error Resume Next fich = FreeFile Open F For Input Lock Read As #fich Close #fich If Err <> 0 Then FichOuvert = True End Function
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
Modifié par pijaku le 23/11/2011 à 09:32
Modifié par pijaku le 23/11/2011 à 09:32
Bonjour,
Pourquoi pas avec une fonction qui boucle sur tous les classeurs ouverts dans l'application...
Et l'appel dans la procédure :
Edit : mes excuses : Bonjour à tous les deux et bonne journée!...
Cordialement,
Franck P
Pourquoi pas avec une fonction qui boucle sur tous les classeurs ouverts dans l'application...
Function ClasseurOuvert(ExtraitNom As String) As Boolean Dim Wb As Workbook ClasseurOuvert = False For Each Wb In Application.Workbooks If Wb.Name Like ExtraitNom & "*" Then ClasseurOuvert = True Exit For End If Next Wb End Function
Et l'appel dans la procédure :
Sub test() ClasseurOuvert "utilisation_" End Sub
Edit : mes excuses : Bonjour à tous les deux et bonne journée!...
Cordialement,
Franck P
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 256
Modifié par eriiic le 23/11/2011 à 10:08
Modifié par eriiic le 23/11/2011 à 10:08
Bonjour tout le monde,
Je pense que cette solution ne marche que si le fichier est ouvert dans la même session d'excel.
C'est peut-être pour ça que la solution de MDF ne marche pas non plus dans son cas.
eric
Je pense que cette solution ne marche que si le fichier est ouvert dans la même session d'excel.
C'est peut-être pour ça que la solution de MDF ne marche pas non plus dans son cas.
eric
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 256
23 nov. 2011 à 10:26
23 nov. 2011 à 10:26
edit :
à relire c'est sans doute plus parce qu'il ne connait pas le nom exact du fichier...
Donc je retire :-)
eric
à relire c'est sans doute plus parce qu'il ne connait pas le nom exact du fichier...
Donc je retire :-)
eric
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
23 nov. 2011 à 11:07
23 nov. 2011 à 11:07
Salut,
Tenant compte des remarques d'Eriiic, peut être voir du côté de GetObject... C'est une piste.
https://www.microsoft.com/en-us/download/details.aspx?id=55984
Tenant compte des remarques d'Eriiic, peut être voir du côté de GetObject... C'est une piste.
https://www.microsoft.com/en-us/download/details.aspx?id=55984
Eaheru
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
20
23 nov. 2011 à 10:34
23 nov. 2011 à 10:34
Merci a vous pour toutes ces réponses. Je vais regarder comment je peux utiliser tout cela pour résoudre mon problème.
Le cas d'utilisation est en fait, un fichier contenant une extraction de données d'une base de données, que j'envoie, formé dans des tableaux issues d'une macro, a d'autres utilisateur qui vont analyser ces tableaux.
Parfois certaines erreurs nécessite de basculer des information d'un tableau a un autre en basculant des lignes sur des onglets et la, les utilisateurs dispose d'un macro qui permet de mettre a jour les tableaux.
Le problème étant que certains font tout le travail et ne sauvegarde pas avant de lancer la mise a jour, hors ma macro ouvre le fichier du disque (qu'il doivent sélectionner) et du coup écrase toutes leurs modifications.
Pour éviter ça, il suffirait d'enregistrer le fichier s'il est déjà ouvert, d'ou ma question :)
les paramètres supplémentaires sont :
- le nom du fichier varie d'un mois sur l'autre
- les utilisateurs utilisent chacun leur répertoire local pour stocker le fichier donc je ne connais pas le chemin
J'espère avoir été clair dans mes explications
Le cas d'utilisation est en fait, un fichier contenant une extraction de données d'une base de données, que j'envoie, formé dans des tableaux issues d'une macro, a d'autres utilisateur qui vont analyser ces tableaux.
Parfois certaines erreurs nécessite de basculer des information d'un tableau a un autre en basculant des lignes sur des onglets et la, les utilisateurs dispose d'un macro qui permet de mettre a jour les tableaux.
Le problème étant que certains font tout le travail et ne sauvegarde pas avant de lancer la mise a jour, hors ma macro ouvre le fichier du disque (qu'il doivent sélectionner) et du coup écrase toutes leurs modifications.
Pour éviter ça, il suffirait d'enregistrer le fichier s'il est déjà ouvert, d'ou ma question :)
les paramètres supplémentaires sont :
- le nom du fichier varie d'un mois sur l'autre
- les utilisateurs utilisent chacun leur répertoire local pour stocker le fichier donc je ne connais pas le chemin
J'espère avoir été clair dans mes explications
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 256
23 nov. 2011 à 11:29
23 nov. 2011 à 11:29
Re,
Il va falloir être un peu plus précis car si tu ne connais ni le nom du fichier, ni son chemin ça fait beaucoup à contrôler...
Est-ce que ton fichier est obligatoirement celui du mois en cours ? Ou éventuellement en plus celui du mois précédent et/ou suivant ?
Est-que c'est obligatoirement dans la même session excel ?
Quand on sera en janvier 2012 il écrasera celui de janvier 2011 ? ou bien il y a des sous-répertoires ?
Tu pourrais inclure l'ouverture du fichier dans ta macro. Comme ça tu auras le nom, le chemin, tu seras sûr d'être dans la même session et tu pourras contrôler facilement s'il est déjà ouvert.
Et tant pis pour ceux qui ouvrent hors macro, ils recommencent...
eric
Il va falloir être un peu plus précis car si tu ne connais ni le nom du fichier, ni son chemin ça fait beaucoup à contrôler...
Est-ce que ton fichier est obligatoirement celui du mois en cours ? Ou éventuellement en plus celui du mois précédent et/ou suivant ?
Est-que c'est obligatoirement dans la même session excel ?
Quand on sera en janvier 2012 il écrasera celui de janvier 2011 ? ou bien il y a des sous-répertoires ?
Tu pourrais inclure l'ouverture du fichier dans ta macro. Comme ça tu auras le nom, le chemin, tu seras sûr d'être dans la même session et tu pourras contrôler facilement s'il est déjà ouvert.
Et tant pis pour ceux qui ouvrent hors macro, ils recommencent...
eric
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Eaheru
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
20
23 nov. 2011 à 18:24
23 nov. 2011 à 18:24
Effectivement.. je vais être plus précis : le fichier a toujours le même nom hormis le nom du mois en fin de chaîne de caractères, il s'agit toujours du mois précédent.
Pour la session Excel ... je ne connais pas le principe de session. Mais voici ce qui peut arriver. La personne ouvre le fichier, effectue des modifications à l'intérieur puis ouvre le fichier contenant la macro de mise à jour. Suivant cette description, je dirais que ce n'est pas dans la même session (?).
La notion d'année n'est pas prise en compte.
j'ai bien inclus l'ouverture du fichier dans la macro (juste pour la mise à jour auto après modif), c'est ce qui leur fait perdre leurs modifications lors des mise a jour.
sinon, effectivement je pourrais aussi leur faire ouvrir ce fichier pour effectuer les modifications....
Merci en tout cas pour toutes vos pistes (que je vais essayer :) )
Pour la session Excel ... je ne connais pas le principe de session. Mais voici ce qui peut arriver. La personne ouvre le fichier, effectue des modifications à l'intérieur puis ouvre le fichier contenant la macro de mise à jour. Suivant cette description, je dirais que ce n'est pas dans la même session (?).
La notion d'année n'est pas prise en compte.
j'ai bien inclus l'ouverture du fichier dans la macro (juste pour la mise à jour auto après modif), c'est ce qui leur fait perdre leurs modifications lors des mise a jour.
sinon, effectivement je pourrais aussi leur faire ouvrir ce fichier pour effectuer les modifications....
Merci en tout cas pour toutes vos pistes (que je vais essayer :) )
23 nov. 2011 à 02:53
Explique ce que tu veux exactement.