Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Concaténer du texte dans la zone commentaire d'une cellule
Je souhaite réaliser une macro qui concatènerai le contenu des cellule B2, C2, D2 dans la zone "commentaire" de la cellule A2.
Cette fonctionnalité est à étendre pour toutes les cellules, soit concaténer le contenu des cellules Bn, Cn, Dn dans la zone commentaire de la cellule An.
Si une bonne âme veut bien me donner un coupe de pouce...
Range("P10:P400").Select
For Each cel In Selection
cel.ClearComments
cel.AddComment
cel.Comment.Text Text:=cel.Offset(0, 7) & cel.Offset(0, 24)
Next cel
ce qui fonctionne correctement mais m'oblige à lancer la macro manuellement.
J'ai déjà vu des macros se lancer automatiquement lors de la modification de la feuille (Private sub etc...), peux tu m'en apprendre un peu plus à ce sujet?
Peut être même me conseiller de la lecture?
D'autre part, existe t'il un moyen de sélectionner la colonne entière sans en spécifier les limites (P10400)? j'ai essayé en nommant la colonne P mais lorsque je réalise la sélection, et comme une cellule fusionnée passe par P, c'est l'ensemble des colonnes couvertes par la cellule fusionnée qui est sélectionnée.
Re : Concaténer du texte dans la zone commentaire d'une cellule
Salut manuthemalicious, pierrejean, le Forum
PierreJean étant déconnecté je te propose de mettre ce code dans le Worksheet_SelectionChange de ta Feuille
soit
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each cel In Range("P10:P400")
cel.ClearComments
cel.AddComment
cel.Comment.Text Text:=cel.Offset(0, 7) & cel.Offset(0, 24)
Next cel
End Sub
Évite autant que possible les .Select cela ralentit le Code
Pour ta deuxième question
je te propose de mette
Code:
For Each Cell In Range("P10:P" & Range("P65536").End(xlUp).Row)
à la place de
Code:
For Each cel In Range("P10:P400")
cela te permettra de sélectionner de la cellule P10 à la dernière cellule non vide de la colonne P.
deuxième Solution: Enlèves la Fusion des Cellules et remplace les par Centrer sur Plusieurs Colonnes
Sélectionnes tes Cellules
Click Droit
Onglet Alignement
Horizontal: Centrer sur plusieurs Colonnes
Et Voila
L'esthétisme sera le même mais la colonne P pourra être sélectionnée sans les autres colonnes fusionnées.
Re : Concaténer du texte dans la zone commentaire d'une cellule
Re
Il me parait excessif de selectionner toute la colonne soit tout de même 65536 cellules
je te suggere (a mettre dans le module de la feuille)
sera declenchée par un changement en colonne P et evitera les cellules fusionnées
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 16 Then
For Each cel In Range("P1:P400")
If Not cel.MergeCells Then
cel.ClearComments
cel.AddComment
cel.Comment.Text Text:=cel.Offset(0, 7) & cel.Offset(0, 24)
End If
Next cel
End If
End Sub
Re : Concaténer du texte dans la zone commentaire d'une cellule
Bonjour et merci à vous de passer du temps sur ce post.
J'ai modifié la macro de la sorte:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cel In Range("P1:P400")
If Not cel.MergeCells Then
cel.ClearComments
cel.AddComment
cel.Comment.Text Text:=cel.Offset(0, 7) & Chr(10) & cel.Offset(0, 24)
cel.Comment.Shape.TextFrame.AutoSize = True
End If
Next cel
End Sub
Afin que les dimensions du commentaire s'adapte automatiquement au contenu.
Cela fonctionne mais le temps de traitement est "relativement" long.
Est-il possible de limiter cet "autosize" au commentaire de la ligne en cours?
De plus, cette macro se lance dès lors qu'un changement est effectif dans la feuille, est-il possible de restreindre son execution aux seules modifications dans les colonnes contenant les textes à insérer dans les commentaires? (Cela pour des questions de temps de traitement).
Ou alors plus simplement définir l'option autosize=true comme valeur par défaut de l'ensemble des commentaires de la feuille?
Re : Concaténer du texte dans la zone commentaire d'une cellule
Re
tu as un exemple de limitation dans le code que je t'ai donné:
If Target.Column = 16 Then
:limitation au changement des cellules de la colonne P
on peut tout aussi bien limiter la creation du commentaire a une seule ou plusieurs cellules (encore faut-il savoir la ou lesquelles)
Comme de coutume un petit fichier exemple sans données confidentielles nous en dirait beaucoup plus sur ton problème (et son eventuelle solution)
Re : Concaténer du texte dans la zone commentaire d'une cellule
Bonsoir et merci pour le temps passé à me faire progresser.
Le projet est en fait un assez banal tableau de suivi d'affaires...
Je joins un exemple avec une seule ligne renseignée. Actuellement, la base en comporte 300 et est amenée, espérons le, à croitre exponentiellement!!!
J'ai donc décidé d'optimiser un peu ce qui se faisait "à la mano" jusqu'alors.
Je passe pas mal de temps à lire des posts sur XLD et à glaner ici ou là des bouts de code que je tente d'adapter.
PierreJean, tu reconnaitras l'une de tes macros de suivi des modifications dans le sous ensemble "commercial", colonne "transmission du dossier complet" et "Etat".
Pour revenir à ma problématique du moment, vous remarquerez que chaque intervenant (commercial, administratif, planification, travaux et facturation) dispose d'une zone de texte "divers" qu'il renseigne avec ce que bon lui semble.
A l'utilisation, il m'a semblé que regrouper l'ensemble de ces informations dans le commentaire du "divers" général était une idée géniale: plus besoin de naviguer de cellules en cellules pour avoir une vision globale des commentaires.
Cependant, avec le code actuel, la zone commentaire ne "s'autosize" pas et la macro modifiée de la sorte:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cel In Range("P1:P400")
If Not cel.MergeCells Then
cel.ClearComments
cel.AddComment
cel.Comment.Text Text:=cel.Offset(0, 7) & Chr(10) & cel.Offset(0, 24)
cel.Comment.Shape.TextFrame.AutoSize = True
End If
Next cel
End Sub
Rend le délais de traitement (quelques secondes) insupportable.
Je vous sollicitait donc pour une macro qui, au lieu de réaliser un "autosize" de tous les commentaires de Range("P1400") se contenterai d'un autosize du commentaire de la ligne en cours de modification:
Par exemple, n étant le numéro de ligne, je modifie la zone de texte divers "Wn" alors le commentaire de la cellule "Pn" est mis à jour et s'autosize.
Enfin, j'embraye sur une autre question, vous remarquerez une zone en partie supérieure du tableau qui contient des contrôles.
Dans les propriétés, il est coché "ne pas déplacer ou dimensionner avec les cellules" et cela fonctionne bien...tant que l'on utilise pas "fractionner les volets", et là, il est ennuyeux de voir ses outils disparaitre au fur et à mesure du déplacement du curseur vers la droite...
Existe t'il une solution pour clouer définitivement ces contrôles?
Pour finir, dans ce code:
HTML:
If Not Application.Intersect(Target, Range("u:u,v:v")) Is Nothing Then
If Target.Comment Is Nothing Then Target.AddComment
With Target.Comment
.Text Text:=.Text & Target & " Modifié le :" & Format(Now, "dd/mm/yyyy ") & " Par:" & Environ("UserName") & vbLf
.Visible = True
.Shape.Select
Selection.AutoSize = True
.Visible = False
End With
End If
Pouvez vous m'expliquer les 3 premières lignes?
D'avance merci et n'hésitez pas pour toute demande de clarification.
Re : Concaténer du texte dans la zone commentaire d'une cellule
Bonsoir,
Rageant ce problème de compatibilité!
Dès demain je réitère l'envoi en supprimant toutes les macro.
C'est peut-être là la source de l'incompatibilité.
Dans l'interval, peux tu me commenter les 3 premières lignes de ce code:
Code:
If Not Application.Intersect(Target, Range("u:u,v:v")) Is Nothing Then
If Target.Comment Is Nothing Then Target.AddComment
With Target.Comment
.Text Text:=.Text & Target & " Modifié le :" & Format(Now, "dd/mm/yyyy ") & " Par:" & Environ("UserName") & vbLf
.Visible = True
.Shape.Select
Selection.AutoSize = True
.Visible = False
End With
End If
Hormis glaner des informations sur le forum, peux tu me conseiller un ouvrage sur la programmation et excel?
Re : Concaténer du texte dans la zone commentaire d'une cellule
Re
Target est la cellule qui a provoqué l'appel a la macro
Si Target appartient a la colonne U ou a la colonne V alors
If Not Application.Intersect(Target, Range("u:u,v:v")) Is Nothing Then
Si le commentaire de Target n'existe pas le creer
If Target.Comment Is Nothing Then Target.AddComment
With permet de repeter ce qui suit (on ne met plus ensuite que le point)
derriere With Target.Comment
.Visible = True vaut Target.Comment.Visible = True
Re : Concaténer du texte dans la zone commentaire d'une cellule
Re
pour modifier les commentaires en colonne P suite a modification de la cellule meme ligne colonne W
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 23 Then
If Target.Offset(0, -7).Comment Is Nothing Then Target.Offset(0, -7).AddComment
With Target.Offset(0, -7).Comment
.Text Text:=.Text & Target & " Modifié le :" & Format(Now, "dd/mm/yyyy ") & " Par:" & Environ("UserName") & vbLf
.Visible = True
.Shape.Select
Selection.AutoSize = True
.Visible = False
End With
End If
End Sub
Pour clouer les controles je n'ai pas de solution mais ne desespere pas il y a des magiciens sur XLD
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.