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 !
après avoir lu des dizaines de pages de forum, mais n'ayant pas trouvé une solution à mon problème, je me décide à vous écrire :
je dois créer une macro qui me permet :
- dans mon onglet SYNTHESE PRR, de regarder les données présentes en colonne E
- si, dans mon onglet TABLEAU ACOMPTE, on retrouve une valeur de la colonne E de l'onglet SYNTHESE PRR dans la colonne E également, alors, on renvoie la date du jour dans la ligne concernée de la colonne F
Merci pour ta réponse 😀. effectivement ca donne bien le résultat escompté 👍 mais je souhaite l'obtenir via une macro car l'onglet SYNTHESE PRR est amené à disparaitre au fur et à mesure du déroulement de la macro que je suis en train de faire.
la formule que tu as écrite (et qui fonctionne) se retrouverait alors avec des REF dans la colonne F de TABLEAU ACOMPTE...
de plus je ne souhaite pas que la date (qui correspond à une date d'envoi de mail) soit écrasée de mise à jour en mise à jour du fichier. c'est pour cela que je cherche à faire la correspondance entre les colonnes E des 2 onglets et à renvoyer la date du jour dans la colonne F du TABLEAU ACOMPTE uniquement si une donnée se trouve dans les 2 onglets.
voici une macro VBA. 🙂 sur la feuille "TABLEAU ACOMPTE" : fais Ctrl e
code VBA de Module1(15 lignes) :
VB:
Option Explicit
Sub Essai()
If ActiveSheet.Name <> "TABLEAU ACOMPTE" Then Exit Sub
Dim n&: n = Cells(Rows.Count, 5).End(3).Row: If n = 1 Then Exit Sub
Dim cel As Range, i&: Application.ScreenUpdating = 0
For i = 2 To n
With Cells(i, 5)
Set cel = _
Worksheets("SYNTHESE PRR").Columns(5).Find(.Value, , -4163, 1, 1)
If Not cel Is Nothing Then .Offset(, 1) = Date
End With
Next i
End Sub
le code sur l'exemple simplifié que j'ai donné pour illustrer ma demande fonctionne bien ! 😀
par contre, je n'arrive pas à l'adapter dans mon vrai fichier de travail...
est-ce que tu aurais la gentillesse de me définir une par une les lignes de codes stp ? 😇 pour que je comprenne bien à quoi ca corresponde et que je puisse ensuite le faire rentrer dans le moule final... 😉
Option Explicit : oblige le programmeur à déclarer les variables.
Sub Essai() .. End Sub : c'est la macro Essai().
If ActiveSheet.Name <> "TABLEAU ACOMPTE" Then Exit Sub : on doit être sur la feuille "TABLEAU ACOMPTE", sinon on quitte la sub sans rien faire.
Dim n& : idem que Dim n As Long : déclaration d'une variable n, de type Long.
n = Cells(Rows.Count, 5).End(3).Row : idem que : n = Cells(Rows.Count, "E").End(xlUp).Row : n = n° de la dernière ligne utilisée, selon la colonne E.
If n = 1 Then Exit Sub : on quitte la sub si n = 1 ; car E1 est pour l'en-tête de colonne "Col E" ; les données numériques 1 à 4 sont en dessous, à partir de E2.
Dim cel As Range, i& : déclaration de deux autres variables ; pour i, dans mon fichier précédent, j'avais oublié le caractère « & » ; donc au lieu d'être de type Long, i était déclaré sans type, donc c'est par défaut du type Variant ; j'ai édité mon post #4 pour mettre la version corrigée du fichier précédent, et j'ai aussi mis à jour le code VBA indiqué dans le post.
Application.ScreenUpdating = 0 : désactivation de la mise à jour de l'écran ➯ l'exécution de la sub est plus rapide.
For i = 2 To n .. Next i : boucle sur les lignes 2 à n ; ici 2 à 5.
With Cells(i, 5) .. End With : avec la cellule de la ligne n° i, colonne E ; donc au départ, c'est avec E2.
VB:
Set cel = _
Worksheets("SYNTHESE PRR").Columns(5).Find(.Value, , -4163, 1, 1)
en colonne E de la feuille "SYNTHESE PRR", on cherche .Value qui est la valeur de la cellule du With ; donc au départ, c'est le chiffre de E2 : 1.
If Not cel Is Nothing Then .Offset(, 1) = Date : si on a trouvé la valeur cherchée, alors on écrit la date 1 colonne à droite de la cellule du With, donc en colonne F(sur la même ligne que la valeur lue) ; exemple : pour 1 qui est lu en E2, on écrit donc la date du jour en F2.
bien sûr, si dans ton vrai fichier le nom des 2 feuilles est différent, ça sera à changer dans la sub ; j'espère qu'avec tous ces commentaires tu arriveras à adapter mon code VBA à ton fichier réel, sinon, n'hésite pas à demander des infos supplémentaires. 😉
- 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