Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Mettre à jour un fichier à partir d'un autre

  • Initiateur de la discussion Initiateur de la discussion jeanphi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jeanphi

XLDnaute Occasionnel
Bonjour

J'utilise 2 classeurs
- Le classeur 1 a un numéro dans la colonne C5:C1000 et une date dans la colonne AH5:AH1000
- Le classeur 2 à un numéro dans la colonne E7:E1000
Si le numéro de la colonne C du classeur 1 est égale au numéro de la colonne E du classeur 2, je souhaite récupérer la date de la colonne AH correspondant au numéro dans le classeur 2
Comment puis je faire cela via une boucle?
Merci pour votre aide!
 
Re : Mettre à jour un fichier à partir d'un autre

Bonjour jeanphi, bonjour à toutes et à tous 🙂

Un petit essai en pièce jointe. Vois si cela peut t'aider et n'hésite pas à poser des questions 🙂

@+

EDIT : Le nom du Classeur1 dans la formule du Classeur2 est à mettre à jour dans la cellule G16 de jeanphi_Classeur2 :
Formule (en F2) : =INDEX(jeanphi_Classeur1!Dates;EQUIV($E2;jeanphi_Classeur1!Numeros;0))
 

Pièces jointes

Dernière édition:
Re : Mettre à jour un fichier à partir d'un autre

Re jeanphi, bonsoir à toutes et à tous 🙂

Je constate que personne ne t'a répondu... 🙄

On veut me laisser faire tout ce que j'aime 😀

En pièce jointe, tu as un zip contenant tes 2 fichiers (jeanphi_Classeur1 et jeanphi_Classeur2).

Si tu ouvres le classeur 2 (celui qui recherche les données), le classeur 1 s'ouvre automatiquement (à condition qu'ils soient tous les deux dans le même répertoire), mais si tu ouvres en premier le classeur 1 (ton classeur contenant tes données brutes), le classeur 2 ne s'ouvre pas automatiquement.

Ceci étant dit, tu trouveras dans jeanphi_Classeur2 un module ConstantesEtVariablesGlobales qui contient :

Code:
[COLOR="Blue"]Option Explicit[/COLOR]

[COLOR="blue"]Public Const[/COLOR] NomFichier1 [COLOR="blue"]As[/COLOR] String = "jeanphi_Classeur1.xls"
[COLOR="blue"]Public Const[/COLOR] LigneDebut& = 7

Tu peux les supprimer si tu souhaites les coder en "dur".

Dans le même classeur, ThisWorkbook contient les instructions qui permettent d'ouvrir jeanphi_Classeur1 ; tu modifieras le chemin menant à ton fichier s'il n'est pas le même que celui de jeanphi_Classeur2 et son nom quand tu te seras approprié le code :

Code:
[COLOR="blue"]Option Explicit[/COLOR]
'

[COLOR="blue"]Private Sub[/COLOR] Workbook_Open()
[COLOR="Green"]'[/COLOR]
[COLOR="blue"]Dim[/COLOR] Chemin [COLOR="blue"]As[/COLOR] String
[COLOR="blue"]Dim[/COLOR] NomFich [COLOR="blue"]As[/COLOR] String
[COLOR="green"]'[/COLOR]
  Application.ScreenUpdating = [COLOR="blue"]False[/COLOR]
  
  Chemin = ThisWorkbook.Path
  [COLOR="blue"]On Error Resume Next[/COLOR]
  Workbooks.Open (Chemin & "\" & NomFichier1)
  [COLOR="blue"]On Error GoTo 0[/COLOR]
  ThisWorkbook.Activate
  
  Application.ScreenUpdating = [COLOR="blue"]True[/COLOR]
[COLOR="blue"]End Sub[/COLOR]

Puis vient le code du bouton de commande créé par l'intermédiaire de la "boîte à outils Contrôles" de la barre d'outils "Visual Basic", qui remplit les champs "Date" (colonne F de jeanphi_Classeur2.xls) :

Code:
[COLOR="Blue"]Private Sub[/COLOR] CommandButton1_Click()
[COLOR="Green"]'[/COLOR]
[COLOR="blue"]Dim[/COLOR] PlageDest [COLOR="blue"]As[/COLOR] Range
[COLOR="blue"]Dim[/COLOR] PlageSource [COLOR="blue"]As[/COLOR] Range
[COLOR="blue"]Dim[/COLOR] CSource [COLOR="blue"]As[/COLOR] Range
[COLOR="blue"]Dim[/COLOR] CDest [COLOR="blue"]As[/COLOR] Range
[COLOR="blue"]Dim[/COLOR] CFound [COLOR="blue"]As[/COLOR] Range
[COLOR="green"]'[/COLOR]
  [COLOR="Blue"]Set[/COLOR] PlageDest = Range("F7:F" & Range("E65536").End(xlUp).Row)
  [COLOR="blue"]With[/COLOR] Workbooks(NomFichier1).Sheets("Feuil1")
    [COLOR="blue"]Set[/COLOR] PlageSource = .Range("C5:C" & .Range("C65536").End(xlUp).Row)
  [COLOR="blue"]End With[/COLOR]
  
  [COLOR="blue"]For Each[/COLOR] CDest In PlageDest.Offset(, -1)
    [COLOR="blue"]Set[/COLOR] CFound = PlageSource.Find(CDest.Value, LookIn:=xlValues)
    [COLOR="blue"]If[/COLOR] Not CFound [COLOR="blue"]Is Nothing Then[/COLOR]
      CDest.Offset(, 1) = CFound.Offset(, 31).Value
    [COLOR="blue"]End If[/COLOR]
  [COLOR="blue"]Next[/COLOR] CDest
[COLOR="blue"]End Sub[/COLOR]

En espérant que cela te convienne 🙂 , sinon dis-moi, je suis prêt à faire plus simple mais moins adaptable 😉

@+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
194
Réponses
2
Affichages
250
Réponses
8
Affichages
495
Réponses
10
Affichages
962
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…