Ouvrir une fichier suivant le nom de celui-ci

  • Initiateur de la discussion Initiateur de la discussion Snoop
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Snoop

XLDnaute Occasionnel
Bonjour le forum,

Je suis en train de faire une macro et je voudrais que les gens m'ouvrent un fichier qui comporte pour le coup a l'intérieur "ccf" ou "ccp".

le probleme de ma boucle est que l'on sort rapidement de celle ci si on clique deux fois sur le meme fichier ne comportant pas ce nom


Je voudrais que soit il m'affiche que les noms comportants ces lettres ou sinon qu'il ne me fasse pas l'ouverture ou me referme le fichier si celui-ci n'est pas bon


D'avance merci

Ligne de ma macro :

Sub testt()
Workbooks.OpenText Filename:=Application.GetOpenFilename("Fichiers (*.*),*.*"), Origin:=xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(4, 1), Array(21, 1), Array(27, 1), Array(54, 1), Array(86, 1), _
Array(102, 1), Array(118, 1), Array(149, 1)), TrailingMinusNumbers:=True

bb = ActiveWorkbook.Name

Do Until InStr(1, ActiveWorkbook.Name, "CCF") Or InStr(1,ActiveWorkbook.Name, "CCP")

Workbooks(bb).Close

Workbooks.OpenText Filename:=Application.GetOpenFilename("Fichiers (*.*),*.*"), Origin:=xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(4, 1), Array(21, 1), Array(27, 1), Array(54, 1), Array(86, 1), _
Array(102, 1), Array(118, 1), Array(149, 1)), TrailingMinusNumbers:=True

bb = ActiveWorkbook.Name
Exit Do

bb = ActiveWorkbook.Name

Loop

End Sub
 
Re : Ouvrir une fichier suivant le nom de celui-ci

Bonsoir

Une piste
L'aide de VBA donne comme exemple de GetOpenFilename

fileToOpen = Application _
.GetOpenFilename("Text Files (*.txt), *.txt")
If fileToOpen <> False Then
MsgBox "Open " & fileToOpen
End If

Cette macro affiche la boite de dialogue et retourne dans fileToOpen le nom du fichier à ouvrir.
Le contrôle du nom permettrait de savoir si le fichier sélectionné est correct, dans l'affirmative on l'ouvre avec open.

JP
 
Re : Ouvrir une fichier suivant le nom de celui-ci

Encore un peu d'aide svp merci


Je viens de faire un test avec une boucle, mais j'ai le deburgueur qui se met à chaque fois, et je n'arrive pas à comprendre pourquoi

Code

Sub testt1()

Do Until InStr(1, filetoopen, "CCF") > 1 Or InStr(1, filetoopen, "CCP") > 1
filetoopen = Application.GetOpenFilename("Fichiers (*.*), *.*")

Loop

MsgBox ("ok")

End Sub
 
Re : Ouvrir une fichier suivant le nom de celui-ci

salut

Comme cela je n'ai pas de probleme. dis ce que ca fait chez toi :

Sub testt1()

Do Until InStr(1, UCase(filetoopen), "CCF") > 0 Or InStr(1, UCase(filetoopen), "CCP") > 0
filetoopen = Application.GetOpenFilename("Fichiers (*.*), *.*")
Loop
MsgBox ("ok")
End Sub
 
Re : Ouvrir une fichier suivant le nom de celui-ci

En faite ce que je ne comprend pas c'est qu'il me casse la boucle a chaque fois ?

J'ai "execution interrompue" et si je fais continuer il n'y a pas de probleme mais à chaque boucle meme si il trouve une fichier avec CCF et bien je suis obliger de passer par le deburgeur ???

car en faite pas besoin de mettre >0 avec rien cela fonctionne aussi, mais j'ai le probleme du debug ?

merci pour l'aide
 
Re : Ouvrir une fichier suivant le nom de celui-ci

Non je n'ai pas de couleur rouge

ci joint l'exemple le fichier si quelqu'un à une idée deux macro dans le module 1 qui devrait faire la meme chose je pense, mais j'ai cette superbe intéruption...
 

Pièces jointes

Re : Ouvrir une fichier suivant le nom de celui-ci

j'ai testé tes deux codes.

Je n'ai rencontré aucun probleme.
Tu airais pas un espion qui dirait que le code s'arrete si la valeur est..; ou quelque chose comme ca ?
Et si tu ferme XL et le re-ouvre, tu as toujours le probleme ?

Sinon tu devrait ajouter : If filetoopen="" then exit do
de facon a gerer le bouton annuler (ou ajouter dans le do until)
 
Re : Ouvrir une fichier suivant le nom de celui-ci

Je viens de tout rallumer et c'est bon, devais etre mon ordi qui commençait à en avoir marre lol...

Sinon derniere question est faite mon filetoopen donne l'adresse complete du fichier, comment je fais pour avoir juste le nom du fichier et non son adresse ?

car si par hasard je m'amuse à faire un dossier avec ces lettres on ouvre un dossier autre ?

en tout cas merci
 
Re : Ouvrir une fichier suivant le nom de celui-ci

tu peux mettre :

dim filetoopen as variant (a la place de string)

filetoopen=getfil......
filetoopen=split(filetoopen,"\")
FichierSansPath= filetoopen(ubound(filetoopen))


si je n'ai pas ete trop vite ca devrait le faire
 
Re : Ouvrir une fichier suivant le nom de celui-ci

Super merci beaucoup, ma boucle est bouclé normalement impossible de se louper cela devrait etre bon 😱)

Bonne journée et merci encore lapix


Nb : je n'ai pas compris tout a fais le code on élimine les / mais pour le ubound c'est drole que cela recupere juste le nom..

Tks
 
Re : Ouvrir une fichier suivant le nom de celui-ci

pas tout a fait ca

Split ca veut dire : coupe la chaine chaque fois que tu trouve le caractere x (\ en l'occurence) et range le dans un tableau

filetoopen devient un tableau avec filetoopen(1), filetoopen(2)....
et sur la base du chemin complet, le dernier \ separe le nom du fichier

Il faut donc prendre le filetoopen(x) avec le plus grand x
pour avoir le plus grand x (qui en passant coorespond au nombre d'elements du tableau) il faut UBound(nom du tableau)

Pas trop vite ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
13
Affichages
1 K
Retour