VbExcel : importer dernier mot adresse ? [Résolu/Fermé]

Signaler
Messages postés
160
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
11 février 2011
-
Messages postés
230
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 août 2009
-
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

13 réponses

Messages postés
230
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 août 2009
32
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 ?
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 76687 internautes nous ont dit merci ce mois-ci

Messages postés
230
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 août 2009
32
Salut le stagiaire
C'est toujours des noms de fichiers que tu récupères ? et avec un controle CommonDialog ou pas ?
Messages postés
160
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
11 février 2011
8
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
Messages postés
160
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
11 février 2011
8
erf vari = NomVar .... j'ai oublié d le changer après la déclaration .. désolé
Messages postés
160
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
11 février 2011
8
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
Messages postés
230
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 août 2009
32
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...

Messages postés
160
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
11 février 2011
8
ctrl + pause n'arèterais pas le 'bug'?

sinon j'essai de suite
Messages postés
230
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 août 2009
32
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...
Messages postés
160
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
11 février 2011
8
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
Messages postés
230
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 août 2009
32
je ne comprends pas trop ce qui est en gras

workbooks("cata.xls").sheets("feuil1").Cells(numligne, 2), 1, 2)
Messages postés
160
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
11 février 2011
8
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..
Messages postés
160
Date d'inscription
jeudi 28 mai 2009
Statut
Membre
Dernière intervention
11 février 2011
8
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 ^^
Messages postés
230
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 août 2009
32
De rien, @ +