VbExcel : importer dernier mot adresse ?
Résolu
necro27
Messages postés
160
Date d'inscription
Statut
Membre
Dernière intervention
-
NicoDisso Messages postés 230 Date d'inscription Statut Membre Dernière intervention -
NicoDisso Messages postés 230 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde,
Je suis stagiaire et jai un petit souci :
Je ne trouve pas comment, dans la même idée d'un mid, ou d'un left, sous vb excel 2 000, détacher le dernier mot d'une adresse que contient une variable.
La variable 'NomVar' contient la valeur suivante qui est récupérée directement après l'avoir ouvert depuis une boite de dialogue 'ouvrir' :
"C:\personnel\Name\Application\cata.xls"
Je voudrait en ressortir "cata.xls" dans une autre variable.
Le souci est que l'adresse change, et par conséquent ne ressortir que les 8 derniers caractères de la chaine de caractères ne fonctionnerai pas.
Merci d'avance
necro27
Je suis stagiaire et jai un petit souci :
Je ne trouve pas comment, dans la même idée d'un mid, ou d'un left, sous vb excel 2 000, détacher le dernier mot d'une adresse que contient une variable.
La variable 'NomVar' contient la valeur suivante qui est récupérée directement après l'avoir ouvert depuis une boite de dialogue 'ouvrir' :
"C:\personnel\Name\Application\cata.xls"
Je voudrait en ressortir "cata.xls" dans une autre variable.
Le souci est que l'adresse change, et par conséquent ne ressortir que les 8 derniers caractères de la chaine de caractères ne fonctionnerai pas.
Merci d'avance
necro27
13 réponses
ok, pas de probleme
donc tu sais que le premier "\" ou "/" dans ton nom de fichier en partant de la fin te donneras la nom de ton fichier.
Mais on doit aussi pouvoir l'avoir en testant le nom du classeur actif, non ?
ActiveWorkbook.Name
qu'en penses tu ?
donc tu sais que le premier "\" ou "/" dans ton nom de fichier en partant de la fin te donneras la nom de ton fichier.
Mais on doit aussi pouvoir l'avoir en testant le nom du classeur actif, non ?
ActiveWorkbook.Name
qu'en penses tu ?
Salut le stagiaire
C'est toujours des noms de fichiers que tu récupères ? et avec un controle CommonDialog ou pas ?
C'est toujours des noms de fichiers que tu récupères ? et avec un controle CommonDialog ou pas ?
Encore moi ^^
Je récupère toujours des noms de fichier en effet avec l'extension '.xls'.
Mais je n'utilise pas de contrôle commondialog..
Voici un extrait du code :
Private Sub Workbook_Open()
Dim NomVar, NomFichier As String
vari = Application.GetOpenFilename
Workbooks.Open (vari)
MsgBox vari
Le msgbox m'affiche l'adresse complète, mais en fait je voudrais n'avoir que le nom du fichier stocké dans NomFichier pour l'utiliser comme suit :
workbooks(nomfichier).sheets("feuil2").cells(1,2)
Ce qui me permet par conséquent d'activer une macro sur le dernier fichier ouvert, peu importe le nom.
(désolé internet défaillant ce matin je n'ai pas pu me reconnecter avant..)
merci
Je récupère toujours des noms de fichier en effet avec l'extension '.xls'.
Mais je n'utilise pas de contrôle commondialog..
Voici un extrait du code :
Private Sub Workbook_Open()
Dim NomVar, NomFichier As String
vari = Application.GetOpenFilename
Workbooks.Open (vari)
MsgBox vari
Le msgbox m'affiche l'adresse complète, mais en fait je voudrais n'avoir que le nom du fichier stocké dans NomFichier pour l'utiliser comme suit :
workbooks(nomfichier).sheets("feuil2").cells(1,2)
Ce qui me permet par conséquent d'activer une macro sur le dernier fichier ouvert, peu importe le nom.
(désolé internet défaillant ce matin je n'ai pas pu me reconnecter avant..)
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
j'en pense que je doit vraiment me prendre trop la tête lol en effet c'est tout bête...j'étais parti sur un comptage du nombre de caractères en partant du début..enfin génial le activeworkbook c'est vrai que sa fonctionne très bien...
merci :)
et pendant que j'y suis je cherche également une deuxième chose que je ne trouve pas j'espère ne pas me ridiculiser 2 fois dans la même demi journée, lol
Ma macro effectue en faite un tri sur le classeur mais le problème est que toute la recherche est visible, c'est à dire que l'on voit la recherche s'effectuer ligne par ligne..
Y'a t'il un moyen de masquer ce traitement ?
Si je ne suis pas clair je suis disposé a m'expliquer.
merci
merci :)
et pendant que j'y suis je cherche également une deuxième chose que je ne trouve pas j'espère ne pas me ridiculiser 2 fois dans la même demi journée, lol
Ma macro effectue en faite un tri sur le classeur mais le problème est que toute la recherche est visible, c'est à dire que l'on voit la recherche s'effectuer ligne par ligne..
Y'a t'il un moyen de masquer ce traitement ?
Si je ne suis pas clair je suis disposé a m'expliquer.
merci
soit tu reduit ta feuille lors du traitement sois tu fais
Application.ScreenUpdating=False
au debut et
Application.ScreenUpdating=true
à la fin,
mais attention tu a interet a etre sur de ton code car si tu bug, et que ne lis pas
"Application.ScreenUpdating=true" excel sera planté pour l'utilisateur, il ne pourra plus rien faire dedans tant dans le code tu fasses "Application.ScreenUpdating=true" essayes pour voir le résultat...
Application.ScreenUpdating=False
au debut et
Application.ScreenUpdating=true
à la fin,
mais attention tu a interet a etre sur de ton code car si tu bug, et que ne lis pas
"Application.ScreenUpdating=true" excel sera planté pour l'utilisateur, il ne pourra plus rien faire dedans tant dans le code tu fasses "Application.ScreenUpdating=true" essayes pour voir le résultat...
Ctrl+pause arrete ta macro mais n'inetragis pas avec excel.
Mais du coup sur mon poste que je le fasse ou pas excel se rafraichit toujours...
pourtant il me semblait bien que ca servait à ca.
Cette propriété a la valeur True si la mise à jour de l'écran est activée. Type de données Boolean en lecture-écriture.
Remarque
Désactivez la mise à jour de l'écran pour accélérer l'exécution du code de votre macro. Vous ne pourrez suivre le déroulement de la macro mais en revanche celle-ci sera exécutée plus rapidement.
N'oubliez pas d'affecter de nouveau la valeur True à la propriété ScreenUpdating à la fin de la macro.
Le plus simple est de reduire ta fenetre au debut de la macro et de l'agrandir à la fin...
Mais du coup sur mon poste que je le fasse ou pas excel se rafraichit toujours...
pourtant il me semblait bien que ca servait à ca.
Cette propriété a la valeur True si la mise à jour de l'écran est activée. Type de données Boolean en lecture-écriture.
Remarque
Désactivez la mise à jour de l'écran pour accélérer l'exécution du code de votre macro. Vous ne pourrez suivre le déroulement de la macro mais en revanche celle-ci sera exécutée plus rapidement.
N'oubliez pas d'affecter de nouveau la valeur True à la propriété ScreenUpdating à la fin de la macro.
Le plus simple est de reduire ta fenetre au debut de la macro et de l'agrandir à la fin...
en effet cela ne marche pas non plus c'est toujours visible.
Cependant, sur l'ancienne question, j'ai un petit souci il ne m'accepte pas partout le 'activeworkbook.name'
sur la ligne de départ (qui fonctionne) :
If workbooks("cata.xls").Sheets("feuil1").Cells(numligne, 2) <> 3440
And workbooks("cata.xls").sheets("feuil1").Cells(numligne, 2), 1, 2) <> 46 then
j'écris avec la solution que tu ma donnée :
if workbooks(activeworkbook.name).Sheets("feuil1").Cells(numligne, 2) <> 3440
And workbooks(activeworkbook.name).sheets("feuil1").Cells(numligne, 2), 1, 2) <> 46 then
ou
if ActiveWorkbook.Sheets("feuil1").Cells(numligne, 2) <> 3440
And ActiveWorkbook.Sheets("feuil1").Cells(numligne, 2), 1, 2) <> 46 then
aucune de ces solutions ne fonctionnent ....
pourtant le "msgbox activeworkbook.name" me renvoi "cata.xls" en ouvrant le fichier cata.xls"
y'a t'il quelque chose qui te dérangerais dans mon code?
merci
Cependant, sur l'ancienne question, j'ai un petit souci il ne m'accepte pas partout le 'activeworkbook.name'
sur la ligne de départ (qui fonctionne) :
If workbooks("cata.xls").Sheets("feuil1").Cells(numligne, 2) <> 3440
And workbooks("cata.xls").sheets("feuil1").Cells(numligne, 2), 1, 2) <> 46 then
j'écris avec la solution que tu ma donnée :
if workbooks(activeworkbook.name).Sheets("feuil1").Cells(numligne, 2) <> 3440
And workbooks(activeworkbook.name).sheets("feuil1").Cells(numligne, 2), 1, 2) <> 46 then
ou
if ActiveWorkbook.Sheets("feuil1").Cells(numligne, 2) <> 3440
And ActiveWorkbook.Sheets("feuil1").Cells(numligne, 2), 1, 2) <> 46 then
aucune de ces solutions ne fonctionnent ....
pourtant le "msgbox activeworkbook.name" me renvoi "cata.xls" en ouvrant le fichier cata.xls"
y'a t'il quelque chose qui te dérangerais dans mon code?
merci
je ne comprends pas trop ce qui est en gras
workbooks("cata.xls").sheets("feuil1").Cells(numligne, 2), 1, 2)
workbooks("cata.xls").sheets("feuil1").Cells(numligne, 2), 1, 2)
je vais me tuer désolé mauvaise recopie...
workbooks("cata.xls").sheets("feuil1").mid(Cells(numligne, 2), 1, 2)
voila sa sera plus compéhensible
et le pire c'est que j'ai vérifié avant d'envoyer..
workbooks("cata.xls").sheets("feuil1").mid(Cells(numligne, 2), 1, 2)
voila sa sera plus compéhensible
et le pire c'est que j'ai vérifié avant d'envoyer..
c'est bon j'ai trouvé !! :)
en faite il fallait que je je déclare 2 variables :
dim var1, var2 as string
var1 = Application.GetOpenFilename
Workbooks.Open (var1)
var2 = ActiveWorkbook.Name
et ensuite dans le programme :
workbooks(var2).sheets("feuil1").cell(1,1) <> 3440
En effet l'erreur été qu'il ne n'accepté pas de faire directement :
workbooks(activeworkbook.name).sheets("feuil1").cell(1,1) <> 3440
(Au faite, pour les feuilles masquées au démarrage d'excel c'est bon j'ai compris comment il fallait procéder mais j'ai oublié de le signaler sur le forum. J'en apprend des choses ces temps-ci !!)
encore merci ^^
en faite il fallait que je je déclare 2 variables :
dim var1, var2 as string
var1 = Application.GetOpenFilename
Workbooks.Open (var1)
var2 = ActiveWorkbook.Name
et ensuite dans le programme :
workbooks(var2).sheets("feuil1").cell(1,1) <> 3440
En effet l'erreur été qu'il ne n'accepté pas de faire directement :
workbooks(activeworkbook.name).sheets("feuil1").cell(1,1) <> 3440
(Au faite, pour les feuilles masquées au démarrage d'excel c'est bon j'ai compris comment il fallait procéder mais j'ai oublié de le signaler sur le forum. J'en apprend des choses ces temps-ci !!)
encore merci ^^