Commentaires dynamiques

N

Nit 06

Guest
Un grand bonjour aux lectrices et lecteurs du forum.

Ma question porte sur l'insertion de commentaires.

Ma feuille en comporte une cinquantaine qu'il me faut périodiquement mettre à jour. C'est long et générateur d'erreur.

Existe t-il un moyen pour mettre ces commentaire à jour automatiquement en fonction de données qu j'actualiserais dans une autre feuille? (un commentaire peut comprter le CA, la marge, le résultat comptable...)

D'avance tous mes remerciements pour votre aide. :)

Bonne journée!!
 

Hervé

XLDnaute Barbatruc
Bonjour nit, le forum

ta demande manque de précision.

Un fichier exemple serait le bienvenu.

en attendant, ce type de macro actualise les commentaires d'une feuille avec les valeurs de leurs cellules respectives.

Sub Bouton3_QuandClic()
Dim c As Comment
For Each c In ActiveSheet.Comments
    c.Text c.Parent.Text
Next
End Sub

salut
 
N

Nit 06

Guest
Merci Hervé c est l 'effet recherché....génial.

Dans mon cas le commentaire peut se trouver en B5 par exemple et le contenu du commentaire se trouve sur une autre feuille en A1 et A2 (car le commentaire comporte plusieurs infos)

Penses tu que celà soit jouable?

Merci à toi.
 

Hervé

XLDnaute Barbatruc
re nit

Oui c'est jouable, ce type de code le fait :

Sub Bouton3_QuandClic()
Dim c As Comment

For Each c In ActiveSheet.Comments
   
Select Case c.Parent.Address(0, 0)
       
Case 'B5'
           
With Sheets('feuil2')
                c.Text .Range('a1') & Chr(10) & .Range('a2')
           
End With
       
Case Else
            c.Text c.Parent.Text
   
End Select
Next c
   
End Sub


mais si tu as 50 commentaires, tu va avoir 50 cases. A moins que tu puisses faire une boucle. Et pour ceci il faudrait que tu nous expliques la relation entre la cellule B5 et les cellules A1,A2.

Salut
 
N

Nit 06

Guest
Peut on dire qu' Hervé est génial........ ;)

Vu les les commentaires sont disséminés un peu partout c'est louppé pour un loop!!!!

Par contre sans vouloir abuser de tes compétences, comment compléter la ligne :

c.Text .Range('a1') & Chr(10) & .Range('a2') ; pour écrire dans le commentaire CA= ;(donnée en A); et MG= ;(données en A)
La structure du commentaire est toujours la même seuls les chiffres changent.

En tout cas merci et bonne journée.
 

Hervé

XLDnaute Barbatruc
re nit

Merci pour le compliment :)

Si tu dois saisir 50 cases, utilise plutot cette syntaxe, plus lisible (enfin je crois) :

Sub Bouton3_QuandClic()
Dim c As Comment
Dim ws As Worksheet

Set ws = Sheets('feuil2')

For Each c In ActiveSheet.Comments
   
Select Case c.Parent.Address(0, 0)
       
Case 'B5': c.Text 'CA= ' & ws.Range('a1') & Chr(10) & 'MG= ' & ws.Range('a2')
       
Case Else: c.Text c.Parent.Text
   
End Select
Next c
   
End Sub


salut
 
N

Nit 06

Guest
Hervé,

Oui tu as raison, mais pour le deuxième commentaire en C5 par exemple, a ses données sur la feuil2 en B1 et B2 et ainsi de suite.

Pas simple, mais déjà mieux que modifier manulemment chaque commentaire....

Bonne journée
 

Hervé

XLDnaute Barbatruc
re

ben si c'est simple :

Sub Bouton3_QuandClic()
Dim c As Comment
Dim ws As Worksheet

Set ws = Sheets('feuil2')

For Each c In ActiveSheet.Comments
   
Select Case c.Parent.Address(0, 0)
       
Case 'B5': c.Text 'CA= ' & ws.Range('a1') & Chr(10) & 'MG= ' & ws.Range('a2')
       
Case 'C5': c.Text 'CA= ' & ws.Range('b1') & Chr(10) & 'MG= ' & ws.Range('b2')
       
Case Else: c.Text c.Parent.Text
   
End Select
Next c
   
End Sub


par contre, si tes commentaires vont de b5 à ax5 et qu'il faut renvoyer les données de a1:a2 puis b1:b2, une boucle est peut etre possible, a voir :

Public Sub vev()
Dim c As Comment
Dim ws As Worksheet
Dim colonne As Byte

Set ws = Sheets('feuil2')
colonne = 1

For Each c In ActiveSheet.Comments
    c.Text 'CA= ' & ws.Cells(1, colonne) & Chr(10) & 'MG= ' & ws.Cells(2, colonne)
    colonne = colonne + 1
Next c

End Sub

salut
 

sebdumar

XLDnaute Nouveau
Re : Commentaires dynamiques

Hervé tout à l'air parfait, mais pour moi cela ne marche pas.
je suis débutant vba (surement une raison valable, pour laquelle cela ne fonctionne pas) :rolleyes:

Voici ce qui se passe
Erreur de compilation: erreur de syntaxe

dans la ligne:
Set ws = Sheets('feuil2')

Merci par avance
 

sebdumar

XLDnaute Nouveau
Re : Commentaires dynamiques

j'étais justement en train de répondre que j'avais décors cela !! merci à toi.
Je signale également que j'ai dû ajouter des espaces
Code:
Sub Bouton3_QuandClic()
Dim c As Comment
Dim ws As Worksheet

Set ws = Sheets("feuil1")

For Each c In ActiveSheet.Comments
Select Case c.Parent.Address(0, 0)
Case "B5": c.Text "CA= " & ws.Range("a1") & Chr(10) & "MG= " & ws.Range("a2")
Case Else: c.Text c.Parent.Text
End Select
Next c
End Sub
je suis sur Microsoft Visual Basic.....:eek:
dsl je connaissait pas la différence.
enfin je vais tester pour voir si ce code marche pour moi car j'en aurais grand grand besoin

Enfin merci à vous !!!

seb
 

sebdumar

XLDnaute Nouveau
Re : Commentaires dynamiques

Minick

Ca Marche a merveille.
En fait mon besoin est différent de celui de Nit06.
Je voudrais:
Placer un commentaire en
A1 des infos se situant en B1
A2 des infos se situant en B2

ETC ...
surement une boucle à faire quelque pars j'imagine !!

merci d'avance
 

Discussions similaires

Statistiques des forums

Discussions
311 709
Messages
2 081 769
Membres
101 816
dernier inscrit
Jfrcs