Ajouter dans une colonne, des commentaires avec le contenu d'une autre colonne

bravojr

XLDnaute Nouveau
Ajouter des commentaires dans une colonne avec le contenu d'une autre [RESOLU]

bonjour,

j'ai trouvé ce script sur internet répondant partiellement à ma question :

Code:
Sub AjouteCommentaire()
  [A:A].ClearComments
  For Each c In Range("C2", [c65000].End(xlUp))
    c.Offset(0, -2).AddComment c.Value
    c.Offset(0, -2).Comment.Visible = True
    c.Offset(0, -2).Comment.Shape.Select
    Selection.AutoSize = True
    c.Offset(0, -2).Comment.Visible = False
  Next c
End Sub

mais ce script ne me permet que d'avoir le commentaire de la colonne C sur la A....

j'aimerai bien pouvoir changer les colonnes à ma guise (même en devant changer le code à chaque fois)

étant réélement débutant en "programmation", toutes les petites modifications que j'ai réalisé sur ce code m'ont conduit à des erreur.:(

je vous demande donc votre aide.

merci par avance
 
Dernière édition:

porcinet82

XLDnaute Barbatruc
Re : Ajouter dans une colonne, des commentaires avec le contenu d'une autre colonne

Salut,

Voici le code commenté :
Code:
Sub AjouteCommentaire()
'on efface les commentaires de la colonne A
[A:A].ClearComments
'pour toutes les cellules de la plage C2:C dernière cellule remplit de la colonne C
For Each c In Range("C2", [c65000].End(xlUp))
    'pour la cellule se trouvant sur la meme ligne (le 0 du offset)
        'et 2 colonnes avant (le -2 du offset) la cellule de la colonne C
    With c.Offset(0, -2)
        'on ajoute un commentaire
        .AddComment c.Value
        'on met a visible le commentaire
        .Comment.Visible = True
        'on selectionne la fenetre du commentaire
        .Comment.Shape.Select
        'on ajuste automatiquement la taille de la fentre du commentaire
        Selection.AutoSize = True
        'on met a non visible le commentaire
        .Comment.Visible = False
    End With
Next c
End Sub

Petite remarque : j'ai mis un With qui évitera que si tu dois changer souvent la valeur des colonnes, tu es moins de ligne a modifier...

@+
 

bravojr

XLDnaute Nouveau
Re : Ajouter dans une colonne, des commentaires avec le contenu d'une autre colonne

Merci de ta réponse, surtout de tes explications...
ca marche!!!:)

info : pour ceux qui comme moi sont nuls en "programmation": pour changer la colone C par E (par exemple), modifier la ligne
Code:
For Each c In Range("C2", [c65000].End(xlUp))
par
Code:
For Each c In Range("E2", [e65000].End(xlUp))
le deuxieme "e" (e65000) m'a causé des soucis de réflexion... ;)

juste encore un petit point noir, comment faire pour passer outre une case vide dans la colone, pour qu'il me génére par exemple un commentaire vide dans l'autre?

encore merci de ton aide
 

bravojr

XLDnaute Nouveau
Re : Ajouter dans une colonne, des commentaires avec le contenu d'une autre colonne

salut,

voici un exemple pour etre plus clair :
A1 B1
B2
A3 B3

Je veux mettre en commentaire les valeurs des cellules de la colonne A sur les cellules de la colonne B
la cellule A2 est vide

En executant le script j'obtient une erreur VBA "400"....
et seule la cellule B1 à un commentaire, si je rempli la cellule A2... plus de probleme.

pour contourner le pb actuelement j'ai remplacer les cellules vide par des espaces.

voila si tu as une solution...

encore merci
 

porcinet82

XLDnaute Barbatruc
Re : Ajouter dans une colonne, des commentaires avec le contenu d'une autre colonne

Salut,

Je ne sais pas trop car chez moi, le code ne fonctionne deja pas tel quel, du coup, je te donne plusieurs syntaxes :
La première devrait permettre d'ajouter un commentaire meme si la cellule de la colonne C est vide, selon le commentaire sera vide
Code:
Sub AjouteCommentaire()
Dim c As Range
'on efface les commentaires de la colonne A
[A:A].ClearComments
'pour toutes les cellules de la plage C2:C dernière cellule remplit de la colonne C
For Each c In Range("C2", [c65000].End(xlUp))
    'pour la cellule se trouvant sur la meme ligne (le 0 du offset)
        'et 2 colonnes avant (le -2 du offset) la cellule de la colonne C
    With c.Offset(0, -2)
        If c.Value <> "" Then
            'on ajoute un commentaire avec le texte
            .AddComment c.Value
        Else
            'on ajoute un commentaire
            .AddComment
        End If
        'on met a visible le commentaire
        .Comment.Visible = True
        'on selectionne la fenetre du commentaire
        .Comment.Shape.Select
        'on ajuste automatiquement la taille de la fentre du commentaire
        Selection.AutoSize = True
        'on met a non visible le commentaire
        .Comment.Visible = False
    End With
Next c
End Sub

Deuxième possibilité, ne pas mettre de commentaire si la cellule est vide :
Code:
Sub AjouteCommentaire()
Dim c As Range
'on efface les commentaires de la colonne A
[A:A].ClearComments
'pour toutes les cellules de la plage C2:C dernière cellule remplit de la colonne C
For Each c In Range("C2", [c65000].End(xlUp))
    'pour la cellule se trouvant sur la meme ligne (le 0 du offset)
        'et 2 colonnes avant (le -2 du offset) la cellule de la colonne C
    With c.Offset(0, -2)
        If c.Value <> "" Then
            'on ajoute un commentaire avec le texte
            .AddComment c.Value
            'on met a visible le commentaire
            .Comment.Visible = True
            'on selectionne la fenetre du commentaire
            .Comment.Shape.Select
            'on ajuste automatiquement la taille de la fentre du commentaire
            Selection.AutoSize = True
            'on met a non visible le commentaire
            .Comment.Visible = False
        End If
    End With
Next c
End Sub

@+
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 321
Messages
2 087 266
Membres
103 502
dernier inscrit
talebafia