VbExcel : importer dernier mot adresse ?

Résolu/Fermé
necro27 Messages postés 160 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 11 février 2011 - 4 juin 2009 à 09:10
NicoDisso Messages postés 230 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 22 août 2009 - 4 juin 2009 à 19:13
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

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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
necro27 Messages postés 160 Date d'inscription jeudi 28 mai 2009 Statut Membre Dernière intervention 11 février 2011 8
4 juin 2009 à 11:37
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
0
NicoDisso Messages postés 230 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 22 août 2009 32
4 juin 2009 à 11:40
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...

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

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

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