Microsoft 365 Refléter des informations d'une data à partir d'un autre fichier Excel

riri90

XLDnaute Nouveau
Bonjour,

Je suis nouvelle sur ce forum où j'espère trouver une réponse à mon problème 🙏

J'ai un premier fichier qui est une Macro qui, une fois exécutée chaque matin, me donne des nouveaux numéros de dossiers qui viennent s'ajouter à ceux qui étaient là auparavant.
Je souhaiterais automatiser le process suivant en code VBA:
A partir d'un deuxième fichier que j'exporte chaque matin à partir d'une platform et que j'enregistre dans un dossier donné, je dois vérifier le statu des dossiers qui sont sur la Macro que j'ai exécutée (anciens et nouveaux), un par un: s'ils ont été traité ou pas encore et aussi faire un copier coller de certaines informations (date de traitement, personne qui a traité le dossier ...) pour chaque dossier.

PS: Les numéros de dossiers ne sont pas appelés de la même manière sur les deux fichiers, exemple :
- Sur le fichier Macro ==> KSM_1234
- Sur le fichier exporté ==> 1234

J'espère que ma requête est claire et que vous pourriez m'aider à y trouver une solution.

Je vous remercie d'avance pour votre aide.
 

riri90

XLDnaute Nouveau
Je vous remercie pour vos retours.

Ci-joint un exemple des deux fichiers :
FichierObtenuDeLaMacro ==> c'est ce fichier que je souhaiterais compléter à l'aide du deuxième ==> FichierExporte.

PS:
- Les noms de dossiers figurants sur les colonnes A des deux fichiers ne sont pas exactement les mêmes ;
- Pareil pour le nom de l'analyst ( j'ai besoin de refléter que le prénom) et les date (besoin que de la date pas l'heure) ;
- Tous les dossiers qui ont un Nbr (colonne E sur le FichierExprote) sont déjà traités, donc je souhaiterais avoir la colonne E du FichierObtenuDeLaMacro en "Terminé" sinon "En cours" ;
- Si pas le dossier ne contient pas Nbr (colonne E sur le FichierExprote), ne rien remplir sur FichierObtenuDeLaMacro ;
- Sur les cellules des colonnes B, C,D,E du FichierObtenuDeLaMacro, il y a une liste déroulante déjà mis en place.

J'espère que j'ai été assez claire cette fois-ci :)

merci d'avance pour vos retours
 

Pièces jointes

  • FichierExporte.xlsx
    11.5 KB · Affichages: 2
  • FichierObtenuDeLaMacro.xlsx
    14.1 KB · Affichages: 2

danielco

XLDnaute Accro
Bonjour,

Essaie :

VB:
Sub Remplir()
  Dim C As Range, Sh As Worksheet, Txt As String, Ligne As Variant
  Set Sh = Workbooks("FichierExporte.xlsx").Sheets("Sheet1")
  With Sheets("Legacy Pipe")
    For Each C In .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
      Txt = Application.Substitute(C.Value, "KSM_", "")
      Ligne = Application.Match(Txt * 1, Sh.[A:A], 0)
      If IsNumeric(Ligne) Then
        C.Offset(, 1) = Sh.Cells(Ligne, 4)
        C.Offset(, 2) = Sh.Cells(Ligne, 2)
        C.Offset(, 3) = Sh.Cells(Ligne, 3)
        C.Offset(, 5) = Sh.Cells(Ligne, 5)
      End If
    Next C
  End With
End Sub

Daniel
 

riri90

XLDnaute Nouveau
Bonjour,

Essaie :

VB:
Sub Remplir()
  Dim C As Range, Sh As Worksheet, Txt As String, Ligne As Variant
  Set Sh = Workbooks("FichierExporte.xlsx").Sheets("Sheet1")
  With Sheets("Legacy Pipe")
    For Each C In .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
      Txt = Application.Substitute(C.Value, "KSM_", "")
      Ligne = Application.Match(Txt * 1, Sh.[A:A], 0)
      If IsNumeric(Ligne) Then
        C.Offset(, 1) = Sh.Cells(Ligne, 4)
        C.Offset(, 2) = Sh.Cells(Ligne, 2)
        C.Offset(, 3) = Sh.Cells(Ligne, 3)
        C.Offset(, 5) = Sh.Cells(Ligne, 5)
      End If
    Next C
  End With
End Sub

Daniel
Merci Daniel pour ton retour. Cepandant, en insérant ce code dans celui de la macro, je rencontre quelques bugs. Cette ligne là est surlignée en jaune : Set Sh = Workbooks("FichierExporte.xlsx").Sheets("Sheet1")

Est ce que c'est dû aux lignes précédentes ?

Merci
 

danielco

XLDnaute Accro
Txt est la variable qui contient le ID CASE après la suppression de "KSM_". C'est une variable texte (String). Pour la transformer en numérique afin de la comparer à l'autre fichier, on la multiplie par 1 (Txt* 1).
"Application.Match" est en VBA, l'équivalent de EQUIV dans Excel. on obtient le n° de ligne correspondant à l'ID case.

Daniel
 

riri90

XLDnaute Nouveau
Txt est la variable qui contient le ID CASE après la suppression de "KSM_". C'est une variable texte (String). Pour la transformer en numérique afin de la comparer à l'autre fichier, on la multiplie par 1 (Txt* 1).
"Application.Match" est en VBA, l'équivalent de EQUIV dans Excel. on obtient le n° de ligne correspondant à l'ID case.

Daniel
Super merci !
et le Sh.[A:A] ??
 

Discussions similaires

Haut Bas