Extraire chemin et nom de classeur pour fonction

J

Julien

Guest
Bonjour,

Je voudrais faire une fonction qui compare les cellules A2,A3... de la feuille ouverte à une autre feuille.

Pour cela j'utilise la fonction RECHERCHEV:

Code:
RECHERCHEV(A2;'D:\\Mes documents\\Excel\\[SuperClasseur.xls]SuperClasseur'!$1:$65536;5;0)

Ca marche pour ce classeur spécifique mais il faudrait que ca marche pour n'importe quel classeur.
Pour cela, il faut que j'utilise par exemple les variables 'CheminFichier' et 'NomClasseur'dans ma formule qui serait donc de cette forme:

Code:
RECHERCHEV(A2;'CheminFichier[NomClasseur.xls]NomClasseur'!$1:$65536;5;0)

Il y a bien une fonction pour demander à l'utilisateur le chemin d'un fichier à partir d'un explorateur, mais celle-ci retourne le chemin complet du fichier:

Code:
FichierChoisi = Application.GetOpenFilename('fichier excel, *.xls', , 'Donner le chemin du fichier à comparer')

J'ai donc par exemple FichierChoisi= 'D:\\Mes documents\\Excel\\SuperClasseur.xls
Je voulais savoir comment extraire le nom du classeur (sans xls) et le chemin (sans le nom du fichier) pour ensuite les placer dans ma formule.

Ou peut-être existe t-il une façon différente pour résoudre mon problème...?

Et si en même temps vous connaissait le code de la boucle pour que ma macro affiche sur la cellule suivante le résultat de la formule en A3... et qu'elle s'arrête lorsque la cellule A.. est vide.

Je vous en remercie d'avance :)
 
B

bebere

Guest
Re:Fichier2: Imprimantes-18-11.zip

bonjour Julien
je mettrai des commentaires
nbrel =l ou ubound(plg1) + nbre de lignes différentes dans plg2
pour dimmensionner tblcompare
ça se passe dans for next en dessous
j'ai mis le même l pour simplifier,autrement 2 boucles
ce que tu supposais est bon
donc la procédure reste tjrs ds imprimante18
chaque fois un nouveau classeur, ou cumuler ds un classeur?
ou un classeur avec la procédure et compre tes 2 fichiers?
pas besoin de dates quelque part
à bientôt
 
J

Julien

Guest
Re:Fichier2: Imprimantes-18-11.zip

Merci.
En fait le nom de mes fichiers changent tous les jours. Par exemple, aujourd'hui c'est Imprimante-29-09, demain ce sera Imprimante 30-09, Lundi ce sera Imprimante-02-10 ...

Pour l'instant la macro que t'as fait, voit le classeur ou est la macro (Imprimante-18-11), mais elle la compare à un classeur fixe Imprimante-17-11.xls.
En fait, il faudrait que la macro soit dans les macro Perso (pas dans un classeur spécifique).
Et pour effectuer la comparaison, je pourrais par exemple ouvrir uniquement les 2 fichiers que je veux comparer dans excel, mettre en premier plan le plus récent. Et ensuite dans la macro je dis que celui en premier plan est le plus récent et celui en arrière plan le moins récent.
Après j'aimerais que le résultat de la comparaison aille dans une nouvelle feuille (sans cumuler).
 
B

bebere

Guest
Re:Fichier2: Imprimantes-18-11.zip

bonjour Julien,le Forum
le code est ds le classeur Julien
lancer procédure Compar
choix des 2 fichiers
wb1 tjrs le plus récent
le résultat ds wb1.compare
commentaire ds code,sur feuille
besoin de plus de détails,tu demandes
à bientôt [file name=Julien.zip size=38363]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Julien.zip[/file]
 

Pièces jointes

  • Julien.zip
    37.5 KB · Affichages: 35
  • Julien.zip
    37.5 KB · Affichages: 36
  • Julien.zip
    37.5 KB · Affichages: 32
J

Julien

Guest
Re:Fichier2: Imprimantes-18-11.zip

Bonjour Bebere, excuse moi de répondre si tard, mais j'étais parti en WE (3 jours).

Merci beaucoup, c'est tout ce que je voulais ta macro! par contre, il doit y avoir encore quelques bugs parce que lorsque je rajoute quelques ref au fichier du 17 je le sauvegarde sous Imprimante-19, puis je lance la macro depuis le fichier Julien.xls, ca bug (il me demande si je veux le debugger).

J'aimerais bien savoir si tu as le même problème, ou si c'est moi qui fait des mauvaises manipulations.
 
B

bebere

Guest
Re:Fichier2: Imprimantes-18-11.zip

bonsoir Julien

tu ouvres le classeur Julien
début module1 sub compar
tu ouvres tes 2 fichiers
la procédure compare et le résultat va ds feuille compare du classeur
imprimantes le plus récent(on peut changer)
décris moi ou çà bugge
je n'ai pas de problèmes(j'essaye tjrs avec les mêmes fichiers)
la procédure est faite pour ouvrir 2 fichiers et comparer

à bientôt
 
J

Julien

Guest
Re:Fichier2: Imprimantes-18-11.zip

Bonjour Bebere,

Je vais te dire ce que j'ai fait pour que ca bug.
J'ouvre le fichier du 17, j'enregistre sous en le nomant d'un autre nom (je ne fais même pas de modif), je ferme tout. J'ouvre Julien.xls. Je lance la macro Compar, je choisi les 2 fichiers et ca m'affiche:
Erreur d'exécution '9':
L'indice n'appartient pas à la sélection.


Un autre problème (mais ca ne bug pas):
Lorsque je rajoute 3 lignes au fichier du 17, je mets 3 nouvelles ref + prix, je ferme. Je lance Compar, je choisi le fichier du 17 et celui du 18: Je vois seulement que la 1ere ref des 3 ajoutés n'est plus en vente. Mais pas les 2 autres.

Fichier du 17:
Référence Prix
ImprimanteA 111,85 €
ImprimanteB 77,80 €
ImprimanteC 117,05 €
ImprimanteD 92,05 €
Moniteur 10,00 €
Ecran 20,00 €
TV 30,00 €

Fichier du 18:
Référence Prix
ImprimanteA 111,85 €
ImprimanteB 77,80 €
ImprimanteC 120,00 €
ImprimanteE 400,00 €
ImprimanteF 500,00 €


Comparaison:
ImprimanteA 111,85 €
ImprimanteB 77,80 €
ImprimanteC prix + 2,95 €
ImprimanteD 92,05 € plus en vente
ImprimanteE 400,00 € nouveau
ImprimanteF 500,00 € nouveau
Moniteur 10,00 € plus en vente

P.S: J'aimerais bien mettre le résultat dans un autre fichier excel, au lieu qu'il soit dans une feuille 'Comparaison' du fichier le plus récent.
 

Bebere

XLDnaute Barbatruc
Re:Fichier2: Imprimantes-18-11.zip

bonsoir Julien
pour le bug
chez moi tout est en ordre
win98se,xl2000
pour l'autre,bug ds le code
j'ai mis les 4 fichiers avec lesquels j'essaye
si tu as encore un bug indique sur quelle ligne
dans quel procédure
à bientôt [file name=JulienV4.zip size=38810]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/JulienV4.zip[/file]
 

Pièces jointes

  • JulienV4.zip
    37.9 KB · Affichages: 30
J

Julien

Guest
Re:Fichier2: Imprimantes-18-11.zip

Salut Bebere,

Je n'ai plus de bug même avec n'importe quel fichier, il faut juste qu'il y ait la date à la fin du nom du fichier.
Merci d’avoir placé la comparaison dans un nouveau fichier. Par contre, dans la macro, j'ai changé le signe de comparaison pour les dates, parce que wb1 n'était pas le plus récent, mais le plus ancien.

Je fais aussi des modification ! J’ai rajouté les produits obsolètes et devenus obsolètes. Et j’ai aussi placé le résultat dans différents onglets (ça à l’air de marcher)

J'ai encore un gros problème:
Avec la macro actuelle, il ne faut pas qu'il y ait + de références dans le fichier le plus récent par rapport au plus ancien. En effet, dans le fichier comparaison il y a le même nombre de ligne que le fichier le plus récent.
Lien supprimé

Un autre petit problème, c'est qu'on dirait que la macro fait des modif au dernier fichier que je choisi puisque lorsque je ferme les fichiers après la macro, il me demande si je veux enregistrer les modifications.

Un autre problème, lorsque les fichiers ne sont pas dans le bon ordre c’est la cata :
Lien supprimé

A bientot

P.S: Comment tu fais pour mettre un bouton dans la feuille et qui lance la macro?
[file name=MacroV5.zip size=30441]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/MacroV5.zip[/file]
 

Pièces jointes

  • MacroV5.zip
    29.7 KB · Affichages: 36
J

Julien

Guest
Re:Fichier2: Imprimantes-18-11.zip

J’ai bien regardé dans le code de la macro comment était fait la recherche et je crois qu’elle regarde dans le fichier le plus ancien la première référence et la compare à la 1ère référence dans l’autre fichier et si elle n’est pas présente, le fichier est marqué « plus en vente » sans regarder les autres références du 2ème fichier.
Si ce n’est pas très clair, je reste à ta disposition pour tous renseignements supplémentaires.
En espérant que tu es toujours là.
++
 

Bebere

XLDnaute Barbatruc
Re:Fichier2: Imprimantes-18-11.zip

bonjour Julien,le Forum
oublier vérifier taille fichier
à bientôt [file name=JulienDer.zip size=32684]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/JulienDer.zip[/file]
 

Pièces jointes

  • JulienDer.zip
    31.9 KB · Affichages: 33
J

Julien

Guest
Re:JulienDer

Salut Bebere,

Je n'ai pas recu tes mails, tu me les a envoyé sur quelle boite?

Merci beaucoup pour avoir fait toutes les modifications sur la comparaison et sur l'affichage dans les onglets. Je n'ai vu aucun souci, tout marche nikel !
J'ai fait qq petites modif:
1) j'ai comparé les fichiers par leur date de modification
2) la macro crée un classeur au lieu d'ouvrir Comparaison.xls puis enregistre sous le nom 'Comparaison dd1-mm1-yyyy1 et dd2-mm2-yyyy2.xls'
Voilà, j'étais content, ca marchait ;)
Sinon, j'ai rajouté des commentaires pour mieux comprendre. A certains endroit j'ai mis des ?, si tu as le temps, j'aimerais bien que tu me dises à quoi ca correspond.

Lien supprimé

Je te remercie beaucoup pour tout ce que tu as fait pour moi. Je suis en stage et grace à toi je vais avoir une bien meilleure note. :)

A très bientôt
 
J

Julien

Guest
Re:JulienDer

Salut Bebere,
Merci de vouloir me rajouter des commentaires. En fait, je t'ai donner le lien vers le fichier .rar dans mon dernier message. On le voit pas parce qu'il est de la même couleur que le texte, il faut cliquer sur:

'Voila mon fichier'

J'ai mis des ? à certains endroit dans le code, mais la ou j'ai surtout du mal à comprendre c'est lorsque tu classes les fichiers dans les différentes feuille de comparaison.xls
Par exemple : L1 = Sheets(s).Columns(1).Find('*', , , , , xlPrevious)

Sinon dans:
'Remplissage du fichier de comparaison

Code:
        For L = 1 To UBound(TblCompare, 1)
            For C = 1 To UBound(TblCompare, 2)
                Sheets('Feuil1').Cells(L, C).Value = TblCompare(L, C)

            Next C
        Next L

Je ne comprends pas comment marche ce double For.
Je comprends le 1er For qui fait ligne par ligne
Le 2ème For doit remplir chaque colonne d'une même ligne, mais pourquoi aller jusqu'à UBound(TblCompare, 2) ? Qu'est ce que ca signifie?

Je voulais faire une modification que je n'ai pas réussi, c'est quand fait sur la 1ere ligne des fichiers, il n'y a pas marqué référence, prix...
La 1ère ligne est aussi une référence. Je ne sais pas quels indices modifier pour la prendre en compte.
 

Discussions similaires

Statistiques des forums

Discussions
312 219
Messages
2 086 369
Membres
103 198
dernier inscrit
CACCIATORE