macro recherchev vers classeur externe ferme avec nom selon date

lydiiee

XLDnaute Junior
Bonjour le forum,

dans mon classeur 1 (joint) j'ai besoin de rentrer une information qui est disponible sur un autre classeur 2.

Ce classeur 2 est un fichier qui se cree chaque jour avec une sauvegarde des donnees de ce jour en question.
il est place a cette adresse sur mon reseau "\\reseaulydiiee\sauvegarde\"

Ce classeur 2 s'intitule "2013-01-01" pour la sauvegarde au 1er janvier, "2013-01-02" pour la sauvegarde au 2 janvier etc… (un fichier cree par jour)

Je souhaite faire une recherche V dans ce classeur 2 correspondant a la 'date debut' inscrite dans la colonne C de mon classeur 1 (donc avec comme nom de fichier la date inscrite dans la colonne C)

Je ne sais pas si cela est comprehensible, je vous mets mon "classeur 1" en piece jointe

Merci d'avance pour votre aide!
Lydiiee
 

Pièces jointes

  • recherche v sur fichier fonction date.xls
    18 KB · Affichages: 84
  • recherche v sur fichier fonction date.xls
    18 KB · Affichages: 88
  • recherche v sur fichier fonction date.xls
    18 KB · Affichages: 91
Dernière édition:

CHALET53

XLDnaute Barbatruc
Re : macro recherchev vers classeur externe ferme avec nom selon date

Quelques précisions (bien que je ne sois pas sûr d'être compétent) :

Je souhaite dans la colonne "reference debut" (E), lorsque cette derniere n'est pas vide,

Si elle n'est pas vide : par quoi est-elle renseignée ?. si elle est renseignée, faut-il écraser l'info existante par celle issue de la recherche

faire une recherche V dans le fichier correspondant a la date debut (donc avec comme nom de fichier la date inscrite dans la colonne C) a une adresse sur mon reseau \\reseaulydiiee\sauvegarde\
Le 'numero' (A) se trouve en colonne B de mon fichier de sauvegarde et la 'reference debut' (colonne E) se trouve en colonne E egalement sur mon fichier de sauvegarde


Si j'illustre par l'exemple la première ligne de ton fichier
Je recherche le numéro 123456 de ce fichier dans la colonne B du fichier 2013-01-01 : je prends l'info de la colonne E de ce dernier et je la mets dans la colonne E du fichier ci-dessus (post #1)

Par rechercheV, je ne suis pas sûr de pouvoir le faire dans un fichier fermé.
Une solution VBA est-elle envisageable (si elle existe) ?

A suivre
 

youky(BJ)

XLDnaute Barbatruc
Re : macro recherchev vers classeur externe ferme avec nom selon date

Bonjour Lydiiee, bonjour Chalet,
Un début de piste à adapter selon les besoins (vba)
Bruno
Code:
dim chemin
chemin = ThisWorkbook.Path & "\" & "[nomfichier.xls]nomonglet'!$A$2:$C$65000,3,FALSE)"
[B2].Formula = "=VLOOKUP(" & [A2] & ",'" & chemin
 

lydiiee

XLDnaute Junior
Re : macro recherchev vers classeur externe ferme avec nom selon date

Bonjour Youky, CHALET,

Merci pour ce code! Je reussi a la faire fonctionner mais avec un nom de fichier prédéfini a l'avance.

Comment faire pour remplacer le nom du fichier pas le contenu de la cellule C?

Mon second probleme, qui va vous paraitre ridicule je pense, est que je n'arrive pas a elargir cette formule a toute la colonne C, et non pas juste une cellule C2 par exemple...

Voici mes 2 test qui n'ont pas fonctionné :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim chemin

If Range("C1:C65536") <> "" Then

chemin = "D:\essai excel\" & "[2013-01-01.xlsx]Sheet1'!$A$2:$E$65000,5,FALSE)"
[E2].Formula = "=VLOOKUP(" & [A2] & ",'" & chemin

End If

End Sub

et :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim chemin

derligne = Sheets("Sheet1").Range("C65536").End(xlUp).Row

For i = 2 To derligne

If Range("C" & i) <> "" Then


chemin = "D:\essai excel\" & "[2013-01-01.xlsx]Sheet1'!$A$2:$E$65000,5,FALSE)"
[E2].Formula = "=VLOOKUP(" & [A2] & ",'" & chemin

Next i

End If

End Sub

Merci
Lydie
 

youky(BJ)

XLDnaute Barbatruc
Re : macro recherchev vers classeur externe ferme avec nom selon date

Re,
Voici la macro que je ne peux tester.
Elle boucle de A2 en bas de A et si E est vide alors on mets la formule sinon on passe au suivant.
Macro à mettre en module et à Exécuter
Demande si besoin de plus d'explications
Bruno
Code:
Sub MyFormule()
For k = 2 To [A65536].End(3).Row
If Cells(k, 5) = "" Then
dx = Cells(k, 3)
nomfichier = Split(dx, "/")(2) & "-" & Split(dx, "/")(1) & "-" & Split(dx, "/")(0)
chemin = "D:\essai excel\[" & nomfichier & ".xlsx]Sheet1'!$A$2:$E$65000,5,FALSE)"
Cells(k, 5).Formula = "=VLOOKUP(" & Cells(k, 1) & ",'" & chemin
End If
Next
End Sub
 

lydiiee

XLDnaute Junior
Re : macro recherchev vers classeur externe ferme avec nom selon date

Bonsoir Bruno

wouah! Ca marche! Mais une fois qu'il a fait la recherche v, je recois un message d'erreur (en PJ)
A quoi est du ce message ? Comment l'eviter?

Merci beaucoup!!
Lydie
 

Pièces jointes

  • Doc1.docx
    414.3 KB · Affichages: 71
  • Doc1.docx
    414.3 KB · Affichages: 81
  • Doc1.docx
    414.3 KB · Affichages: 81

youky(BJ)

XLDnaute Barbatruc
Re : macro recherchev vers classeur externe ferme avec nom selon date

Re, c'est parsqu'il n'y a pas de date en col C
Alors faut modifier pour éviter l'error
Bruno

Code:
Sub MyFormule()
For k = 2 To [A65536].End(3).Row
If Cells(k, 5) = "" And IsDate(Cells(k,3)) Then
dx = Cells(k, 3)
nomfichier = Split(dx, "/")(2) & "-" & Split(dx, "/")(1) & "-" & Split(dx, "/")(0)
chemin = "D:\essai excel\[" & nomfichier & ".xlsx]Sheet1'!$A$2:$E$65000,5,FALSE)"
Cells(k, 5).Formula = "=VLOOKUP(" & Cells(k, 1) & ",'" & chemin
End If
Next
End Sub

EDIT: si la valeur mis par la formule ne doit pas changer on peux supprimer la formule en remplacant par la valeur
Pour cela en dernière ligne ajouter
Cells(k,5).value=Cells(k,5).value
 
Dernière édition:

lydiiee

XLDnaute Junior
Re : macro recherchev vers classeur externe ferme avec nom selon date

Bonsoir Bruno,

Il continue a mettre un message d'erreur lorsque la valeur cherchee n'est pas dans le fichier (ce qui peut arriver). Comment eviter ce message d'erreur et donc stopper le calcul car pas de calcul a mettre...(laisser la cellule vide dans ce cas)?

Merci !
Lydie
 

CHALET53

XLDnaute Barbatruc
Re : macro recherchev vers classeur externe ferme avec nom selon date

Bonjour Lydie
Tu peux préciser dans quel fichier :
Le fichier de base (colonne C)
ou
Le fichier 2013-MM-JJ.xls
Si c'est le premier (comme je crois le comprendre dans ton post 8), à l'intérieur de la boucle créée par Youky, tu testes cette colonne :
if cells(k,3)= "" then goto suite (derrère For k = 2 To [A65536].End(3).Row)
Tu rajoutes juste au-dessus de Next :
suite:

Tu peux aussi rajouter un message d'avertissement

a+
 

youky(BJ)

XLDnaute Barbatruc
Re : macro recherchev vers classeur externe ferme avec nom selon date

Bonjour Chalet et Lydie, bon dimanche à tous,
Je crois que c'est le message #N/A que tu ne souhaite pas.
Cette macro le supprimera et supprimera la formule pour ne mettre que la valeur.
Si cela ne conviens pas supprime en macro cette ligne rouge et remplace par l'autre en vert.

Bruno

Cells(k, 5).Value = IIf(Cells(k, 5) = "#N/A", "", Cells(k, 5).Value) 'mets que la valeur et supp #N/A
If(Cells(k, 5) = "#N/A" then Cells(k,5)="" 'garde formule et supp "#N/A"

Code:
Sub MyFormule()
For k = 2 To [A65536].End(3).Row
If Cells(k, 1) <> "" And IsDate(Cells(k, 3)) And Cells(k, 5) = "" Then
dx = Cells(k, 3)
nomfichier = Split(dx, "/")(2) & "-" & Split(dx, "/")(1) & "-" & Split(dx, "/")(0)
chemin = "D:\essai excel\[" & nomfichier & ".xlsx]Sheet1'!$A$2:$E$65000,5,FALSE)"
Cells(k, 5).Formula = "=VLOOKUP(" & Cells(k, 1) & ",'" & chemin
Cells(k, 5).Value = IIf(Cells(k, 5) = "#N/A", "", Cells(k, 5).Value) 'mets que la valeur et supp #N/A
End If
Next
End Sub
 

lydiiee

XLDnaute Junior
Re : macro recherchev vers classeur externe ferme avec nom selon date

Bonjour CHALET et Bruno,

Malgré ton nouveau code Bruno, cela continu de mettre un message d'erreur lorsque dans le fichier source de sauvegarde "format date" il ne trouve pas le "numero" (colonne A de mon fichier de synthese ou se trouve le code)

le message est "run-time error 13 type mismatch"

je vous mets en piece jointe mes fichier si vous souhaitez tester en changeant le chemin
les "numeros" de mon fichier de synthese ne sont que sur le fichier de sauvegarde "2013-01-01". Donc des que dans le fichier de synthese on tape "2/1/2013"dans la colonne date (C), cela renvoie #NA et envoie le message d'erreur.

PS / n'avoir que la valeur et ne pas garder la formule (dans la colonne E) me convient tres bien, car cette valeur n'a pas besoin d'etre mise a jour.

merci encore
Lydie

PS 2 : Je pensais egalement a un autre cas... si je tape dans la colonne C de mon fichier de synthese 4/1/2013 et que je n'ai pas de fichier de sauvegarde pour ce jour en question, peut il me demander de choisir le fichier de sauvegarde sur ce meme chemin? (ainsi je selectionne le fichier 03-01-2013 qui existe par exemple?)
 

Pièces jointes

  • recherche v sur fichier fonction date.xls
    37.5 KB · Affichages: 72
  • recherche v sur fichier fonction date.xls
    37.5 KB · Affichages: 73
  • 2013-01-03.xlsx
    11.5 KB · Affichages: 72
  • 2013-01-01.xlsx
    11.7 KB · Affichages: 72
  • 2013-01-02.xlsx
    11.5 KB · Affichages: 68
  • recherche v sur fichier fonction date.xls
    37.5 KB · Affichages: 68

CHALET53

XLDnaute Barbatruc
Re : macro recherchev vers classeur externe ferme avec nom selon date

Re,

Je vais laisser Youki te répondre
Ta procédure événementielle alourdit considérablement le traitement
Il faut au moins mettre dans la procédure de Youki
en début : application.enableEvents=false
et Avant le End : application.enableEvents = True

Pour éviter les aller / Retour durant le traitement

toutefois, ce n'est pas suffisant
 

youky(BJ)

XLDnaute Barbatruc
Re : macro recherchev vers classeur externe ferme avec nom selon date

Bonjour tous,
Je comprends mieux,
Attention Lydie entre chercher un texte et chercher du numerique cela ne se fait pas de la même façon
Ou il faudra rajouter du code pour savoir si text ou numeric à chercher (j'ai mis pour du text)
Heuu!! dans le fichier on a Numéro pour chercher un Nom cela fait désordre
J'ai vu que tu voulais en événement Change .........pas de soucis
J'ai supprimé module1 tout se passe en....... Change de la feuille
Voici le nouveau fichier avec la macro
Ca doit passer sans bug
Bruno
 

Pièces jointes

  • recherche v sur fichier fonction date (10).xls
    47 KB · Affichages: 71

youky(BJ)

XLDnaute Barbatruc
Re : macro recherchev vers classeur externe ferme avec nom selon date

Bonjour tous,
Je viens de faire une modif en macro cela mets l'adresse de cellule au lieu de la valeur
Comme cela texte ou numérique fonctionneront.
J'ai supprimé le displayalerte pour avoir le choix d'ouverture d'un autre fichier.
Si #N/A est effacé.
Attention aussi, les valeur à chercher sont en col A sur le 01/01/2013 et sur les autres en col B
A verifier

Bruno
 

Pièces jointes

  • recherchevfonctiondate.xls
    47 KB · Affichages: 60

Discussions similaires

Réponses
0
Affichages
141

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 847
dernier inscrit
Djigbenou