Microsoft 365 VBA : copier / coller d'un onglet à l'autre en fonction d'une valeur

Lisette

XLDnaute Junior
Bonjour à tous !

Débutante en VBA, je n'arrive pas à trouver la solution à mon souci qui est, j'en suis certaine, très simple pour beaucoup d'entre vous...

Dans mon fichier : 2 onglets
1 onglet "ACCUEIL" : où les personnes viennent rentrer des données
1 onglet "ACTIONS HSE" : qui est ma base de données.

Dans l'onglet 1 : la personne entre la référence en M2 et son commentaire en O2

J'ai une fonction en Q2 qui me reprend les commentaires existants dans l'onglet "ACTIONS HSE" et ajoute le commentaire avec la date.

Je souhaite simplement que la valeur de la cellule Q2 soit reportée dans l'onglet "ACTIONS HSE".
En gros, aller chercher la référence de l'action en colonne E et coller le contenu de Q2 en colonne N.

J'ai tenté de reproduire des macros trouvée ici et là sur les forums et sur youtube et rien à faire.
Quelqu'un pourrait-il me venir en aide s'il vous plaît ?

PS : les tableaux sont à des places assez étranges, c'est parce que j'ai des graphiques au-dessus et à côté de mes tableaux dans mon vrai tableau de travail.
 

wDog66

XLDnaute Occasionnel
Bonjour Lisette,

Je ne sais pas si c'est votre habitude, mais vous devriez faire attention au fichier que vous partagez

Vous avez un centre de gestion de confidentialité sur Excel, il permet d'effacer les données personnelles
1719412764871.png

Avec ce fichier, je connais votre nom et celui de votre société

Dans le monde actuel de telles informations sont une mine d'or pour les hackers en tout genre

Ce n'était qu'une information ;)
 
Dernière édition:

vgendron

XLDnaute Barbatruc
Hello
une proposition par macro (le fichier est en xlsm)
quand tu mets un commentaire ET qu'il y a une référence, le code va coller le commentaire à la bonne ligne avec la date du jour
 

Pièces jointes

  • exemple.xlsm
    22.4 KB · Affichages: 14

Lisette

XLDnaute Junior
Bonjour Lisette,

Je ne sais pas si c'est votre habitude, mais vous devriez faire attention au fichier que vous partagez

Vous avez un centre de gestion de confidentialité sur Excel, il permet d'effacer les données personnelles
Regarde la pièce jointe 1199556
Avec ce fichier, je connais votre nom et celui de votre société

Dans le monde actuel de telles informations sont une mine d'or pour les Kackers en tout genre

Ce n'était qu'une information ;)
Mince ! Je n’y avais pas pensé !!! Merci beaucoup pour votre alerte !
 

wDog66

XLDnaute Occasionnel
De rien Lisette ;)

Personne n'y pense malheureusement et pourtant nous devrions être très vigilant !

Les attaques par usurpation d’identité (Identity theft) sont très fréquentes

Un peu de lecture pour celles et ceux que ça intéresserait
 

vgendron

XLDnaute Barbatruc
Hello

essaie ce code en lieu et place
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("O2")) Is Nothing Then
        If Range("M2") = "" Or Target = "" Then Exit Sub
        With Sheets("Actions HSE").ListObjects(1)
            Set trouve = .ListColumns(3).Range.Find(Format(Range("M2"), "00"), LookIn:=xlValues)
            If Not trouve Is Nothing Then
                lig = trouve.Row - .Range.Row
                nbCarGras = Len(Format(Now, "dd/mm/yy") & ": " & Target)
                
                'on place le résultat à sa place
                .DataBodyRange(trouve.Row - .Range.Row, 12) = Format(Now, "dd/mm/yy") & ": " & Target & Chr(10) & .DataBodyRange(trouve.Row - .Range.Row, 12)
                
                'on remet tout en noir, sans gras
                .DataBodyRange(trouve.Row - .Range.Row, 12).Font.Color = xlblack
                .DataBodyRange(trouve.Row - .Range.Row, 12).Font.Bold = False
                'on colore en rouge gras, le dernier commentaire
                With .DataBodyRange(trouve.Row - .Range.Row, 12).Characters(Start:=1, Length:=nbCarGras).Font '11 corresponds au caractère 1
                    .Color = -16776961
                    .Bold = True
                End With
            End If
        End With
    End If
End Sub
 

Lisette

XLDnaute Junior
Hello

essaie ce code en lieu et place
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("O2")) Is Nothing Then
        If Range("M2") = "" Or Target = "" Then Exit Sub
        With Sheets("Actions HSE").ListObjects(1)
            Set trouve = .ListColumns(3).Range.Find(Format(Range("M2"), "00"), LookIn:=xlValues)
            If Not trouve Is Nothing Then
                lig = trouve.Row - .Range.Row
                nbCarGras = Len(Format(Now, "dd/mm/yy") & ": " & Target)
               
                'on place le résultat à sa place
                .DataBodyRange(trouve.Row - .Range.Row, 12) = Format(Now, "dd/mm/yy") & ": " & Target & Chr(10) & .DataBodyRange(trouve.Row - .Range.Row, 12)
               
                'on remet tout en noir, sans gras
                .DataBodyRange(trouve.Row - .Range.Row, 12).Font.Color = xlblack
                .DataBodyRange(trouve.Row - .Range.Row, 12).Font.Bold = False
                'on colore en rouge gras, le dernier commentaire
                With .DataBodyRange(trouve.Row - .Range.Row, 12).Characters(Start:=1, Length:=nbCarGras).Font '11 corresponds au caractère 1
                    .Color = -16776961
                    .Bold = True
                End With
            End If
        End With
    End If
End Sub
C'est génial : MERCI beaucoup !!!!
 

Discussions similaires

Statistiques des forums

Discussions
314 422
Messages
2 109 447
Membres
110 482
dernier inscrit
ilyxxxh