Bonjour chers membres , je suis novice en VBA , je travaille sur un document et je voudrais solliciter votre aide pour un souci . J ai un un fichier excel sur lequel je voudrais faire une correspondance entre des données de deux feuilles (TOUT) et (CORRESPONDANCE) .Je dois parcourir toutes les lignes de la colonne (Date décaissement ) de la feuille (TOUT) si je trouve une date correspondante à (2019-12-31 00:00:00.000) dans cette colonne je copie la valeur correspondante dans la colonne (NUM_DOSSIER) que je vais rechercher ensuite dans la colonne (NUM_DOSSIER) de la feuille (CORRESPONDANCE) . Si je trouve une ligne correspondante , je copie la valeur de la colonne (DATE_EFFET) de cette ligne et je vais la coller dans la colonne (Date décaissement ) de la feuille (TOUT) correspondant au numero dossier . Priere m’aider svp . Ci-dessous le fichier . FNFI_BON3.xlsm (2,6 Mo)
Bonjour
Ci-joint ma proposition
Attention onglet « CORRESPONDANCE » il n’y a pas de colonne comme cité ainsi :
« je vais rechercher ensuite dans la colonne (NUM_DOSSIER) de la feuille (CORRESPONDANCE) »
J’ai deux colonnes qui s’en rapproche :
« Ancien dossier »
« Nouveau dossier »
J’ai opté pour la première dans mon traitement
« Ancien dossier »
Si c’est un mauvais choix il faudra le modifier
Onglet « TOUT » colonne « L » choisis une cellule qui porte la date à utiliser
Double-cliques dessus
Constates le résultat
Fais moi un retour
Attention de mettre onglet « CORRESPONDANCE » colonne « ref_demande » un représentant de celle-ci ayant la date recherchée
Pour celle citée dans ton contexte j’ai du rajouté colonne « C » de cet onglet une « ref_demande » la possédant afin de valider ma procédure (ajout onglet « TOUT » en colonne « L » de la date onglet « CORRESPONDANCE » colonne « E » pour la « ref_demande »)
Merci FFO pour votre retour , j ai essayé avec le clic mais ca n’a pas donné le resultat escompté , l’objectif était de faire un traitement automatique sur tout la colonne à travers un bouton . Mais votre réponse m’a orienté à essayé ceci qui a marché :
Sub MettreAJourDateDecaissement()
Dim wsTout As Worksheet, wsCorresp As Worksheet
Dim lastRowTout As Long, lastRowCorresp As Long
Dim i As Long, j As Long
Dim numDossier As String, dateEffet As Variant
Set wsTout = ThisWorkbook.Sheets("TOUT")
Set wsCorresp = ThisWorkbook.Sheets("CORRESPONDANCE")
lastRowTout = wsTout.Cells(wsTout.Rows.Count, "C").End(xlUp).Row
lastRowCorresp = wsCorresp.Cells(wsCorresp.Rows.Count, "F").End(xlUp).Row
For i = 2 To lastRowTout
If Trim(wsTout.Cells(i, 12).Value) = "2019-12-31 00:00:00.000" Then
numDossier = Trim(wsTout.Cells(i, 3).Value) ' Colonne C = NUM_DOSSIER
' Recherche dans la feuille CORRESPONDANCE
For j = 2 To lastRowCorresp
If Trim(wsCorresp.Cells(j, 6).Value) = numDossier Then ' Colonne F = Nouveau dossier
dateEffet = wsCorresp.Cells(j, 5).Value ' Colonne E = DATE_EFFET
wsTout.Cells(i, 12).Value = dateEffet ' Mise à jour colonne L ("Date décaissement")
Exit For
End If
Next j
End If
Next i
MsgBox "Mise à jour des dates de décaissement terminée."
" j ai essayé avec le clic mais ca n’a pas donné le resultat escompté"
Il serait bien de m’en dire un peu plus :
Résultats obtenus avec celui attendu pour les « ref_demande » concerné
Sans plus amples explications je ne pourrais comprendre ce qui n’a pas convenu
« l’objectif était de faire un traitement automatique sur tout la colonne à travers un bouton »
C’est exactement ce que réalise mon traitement si ce n’est qu’en lieu et place d’un bouton un doubleclick sur la cellule colonne « L » qui porte la date concernée
Ainsi comme un Bouton de déclencher le processus avec récupération simple de la date à utiliser
Quand je relis , je crois que le soucis venait du choix de la colonne du dossier , j ai mal expliqué cette partie , c’ est avec la colonne nouveau dossier qu’il faut comparer , j ai essayé de changer en faisant
On Error Resume Next
ligne = Sheets(« CORRESPONDANCE »).Columns(« F:F »).Find(what:=Range(« C » & i), After:=Sheets(« CORRESPONDANCE »).Range(« D1 »), LookIn:=xlValues, LookAt:=xlWhole).Row
If ligne > 0 Then
au lieu de :
On Error Resume Next
ligne = Sheets(« CORRESPONDANCE »).Columns(« D:D »).Find(what:=Range(« C » & i), After:=Sheets(« CORRESPONDANCE »).Range(« D1 »), LookIn:=xlValues, LookAt:=xlWhole).Row
If ligne > 0 Then
Mais quand je cliquait dans la cellule ça ne réagissait pas .
Donnes moi une dates à utiliser ainsi que la bonne colonne onglet « CORRESPONDANCE » pour le « NUM_DOSSIER » puis quel résultat attendu onglet « TOUT » concernant les « ref_demande » impactés avec pour chacun la date à obtenir colonne « L »
Ainsi de réaliser des tests pour les obtenir
Merci à toi
Je viens de tester avec la nouvelle colonne « NUM_DOSSIER » onglet « CORRESPONDANCE » modifiée dans la procédure
Tu trouveras ci-joint toutes les dates mises en place colonne « L » onglet « TOUT » pour la date « 2019-12-31 00:00:00.000 » sur fond jaune aprés le déclenchement par doubleclick en cellule « L838 » qui avait celle-ci
Merci pour ce retour positif
Me voilà rassuré
Attention dans le dernier fichier transmis une ligne de code colore en jaune les cellules colonne « L » onglet « TOUT » modifiées
Il faut la supprimer pour éviter cette colorisation
Si pb à cette intervention dis le moi
Au plaisir de t’aider une prochaine fois