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

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

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
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
C'est génial : MERCI beaucoup !!!!
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…