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:

lydiiee

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

Bonsoir Bruno,

Ca fonctionne! :eek:

J'ai juste besoin de "quelques" precisions :confused: :

- Quand il n'y a pas le fichier correspondant, il ouvre "mes documents" par defaut, comment faire pour qu'il ouvre le chemin ? (ou devrait normalement se situer le fichier qu'il n'a pas trouve)

- Si mes dates ne sont plus au format jj/mm/aaaa mais jj-mm-aaaa, que dois changer dans le code? :
nomfichier = Split(dx, "/")(2) & "-" & Split(dx, "/")(1) & "-" & Split(dx, "/")(0)

- Si je veux ajouter cette meme formule sur les colonnes D (date fin) et F (reference fin) je dois recopier toute la formule avec les nouvelles references de cellules?

- enfin, si je veux realiser cette formule sur plusieurs feuilles dans ce classeur, je dois recopier le code sur chacune des feuilles? ou dois je creer un module?

Merci beaucoup!!!
Lydie
 

youky(BJ)

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

Bonsoir Lydie,
Normalement ça doit passer si format jj-mm-aaaa
Si le format est Text alors faut ajouter cette ligne en gras juste avant
on remplace les - par /

dx = Replace(dx, "-", "/")
nomfichier = Split(dx, "/")(2) & "-" & Split(dx, "/")(1) & "-" & Split(dx, "/")(0)

Pour la fenêtre mes documents par défaut, Je ne sais pas comment faire(je me renseignerais)

pour les formules col D et F
Faut ajouter
chemin2 = "D:\essai>>>>>>>>>et la suite faut changer le 5 (qui est la colonne)

Target.Offset(,3) .Formula = "=VLOOKUP(" & Target.Offset(, -2).Address & ",'" & chemin2

Si tu veux faire sur plusieurs feuilles mets la macro dans un module (remplace tous les Target par Selection)
Ensuite sur toutes les feuilles désirées tu mets le nom de la macro à la place de la macro actuelle.

Si tu as des plantages affiche la fenêtre execution et copie ceci et fait entrer(cela réactive les événements)
Application.EnableEvents = True

Bruno @+
 

lydiiee

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

Bonjour Bruno,

Concernant mes dates qui ne sont plus au format jj/mm/aaaa mais jj-mm-aaaa, ton code marche parfaitement maintenant, merci!

Par contre je bloque sur le fait de faire la meme formule pour les colonnes D et F...

Car je ne peux pas changer juste le chemin (qui d'ailleurs reste le meme car c'est la meme donnee que je vais rechercher la meme donnee mais sur le fichier correspondant a la date fin (F) et non la date de debut (E))

Je dois changer la formule avec ces modifs :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column <> 4 Then Exit Sub
If Target = "" Then Exit Sub
If Target.Offset(, -3) = "" Or Not IsDate(Target) Then Exit Sub
dx = Target.Value
dx = Replace(dx, "-", "/")
nomfichier = Split(dx, "/")(2) & "-" & Split(dx, "/")(1) & "-" & Split(dx, "/")(0)
chemin = "D:\essai excel\[" & nomfichier & ".xlsx]Sheet1'!$A$2:$E$65000,5,FALSE)"
'chemin = ThisWorkbook.Path & "\[" & nomfichier & ".xlsx]Sheet1'!$A$2:$E$65000,5,FALSE)"
With Target.Offset(, 2)
Application.EnableEvents = False
'Application.DisplayAlerts = False
.Formula = "=VLOOKUP(" & Target.Offset(, -3).Address & ",'" & chemin
If Application.IsNA(.Value) = True Then
.Value = ""
Else
.Value = .Value
End If
Application.EnableEvents = True
'Application.DisplayAlerts = True
End With
End Sub

Car je dois changer la colonne de reference et le nom du fichier et la cellule de destination de la formule... Bref je ne sais pas trop si je suis claire, mais quand je tente de rajouter cette formule complete a la suite de la precedente il n'en tient pas compte.
Est-ce possible de trouver un moyen de l'inclure avec la premiere (car au fond c'est le meme code, simplement les cellules de references qui change)?

desolee pour cette question stupide mais je bloque :-(

Merci
Lydie
 
Dernière édition:

youky(BJ)

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

Voici le plus gros effectué.
Tout doit être bon suf la ou j'ai mis 'revoir la fin de la ligne

Bruno
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub

'date debut
If Target.Column = 4 Then
If Target.Offset(, -3) = "" Or Not IsDate(Target) Then Exit Sub
dx = Target.Value
dx = Replace(dx, "-", "/")
nomfichier = Split(dx, "/")(2) & "-" & Split(dx, "/")(1) & "-" & Split(dx, "/")(0)
chemin = "D:\essai excel\[" & nomfichier & ".xlsx]Sheet1'!$A$2:$E$65000,5,FALSE)"
With Target.Offset(, 2)
Application.EnableEvents = False
.Formula = "=VLOOKUP(" & Target.Offset(, -3).Address & ",'" & chemin
    If Application.IsNA(.Value) = True Then
      .Value = ""
    Else
      .Value = .Value
    End If
Application.EnableEvents = True
End With
End If

'date fin
If Target.Column = 5 Then
If Target.Offset(, -4) = "" Or Not IsDate(Target) Then Exit Sub
dx = Target.Value
dx = Replace(dx, "-", "/")
nomfichier = Split(dx, "/")(2) & "-" & Split(dx, "/")(1) & "-" & Split(dx, "/")(0)
chemin = "D:\essai excel\[" & nomfichier & ".xlsx]Sheet1'!$A$2:$E$65000,5,FALSE)"   'revoir la fin de la ligne
With Target.Offset(, 2) 'c'est bon
Application.EnableEvents = False
.Formula = "=VLOOKUP(" & Target.Offset(, -4).Address & ",'" & chemin
If Application.IsNA(.Value) = True Then
.Value = ""
Else
.Value = .Value
End If
Application.EnableEvents = True
End With
End if
End Sub
 

lydiiee

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

Bonjour Bruno,

C'est juste parfait! Tout fonctionne parfaitement, je l'ai mis en module afin de le faire fonctionner sur plusieurs feuilles.

Un grand merci pour ton aide et expertise!

Lydie
 

CHALET53

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

Bonjour Lydie, bonjour Bruno

Lydie, tu as bien fait de m'interpeler le 06/04 sur cette demande à partir d'une autre demande : ceci a permis de mettre en selle un véritable expert sur ce problème
bravo Bruno

a+
 

Discussions similaires

Réponses
0
Affichages
201

Statistiques des forums

Discussions
312 083
Messages
2 085 188
Membres
102 809
dernier inscrit
Sandrine83