XL 2010 Copier les commentaires en masse vers un autre emplacement

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jokerfidelio

XLDnaute Occasionnel
Bonjour a tous et d'abord merci pour votre travail a tous

Dans l'exemple du fichier donné ici, est il possible via VBA (via bouton de formulaire) de copier les commentaires de plusieurs cellules exemple ici
"A1:A21"
et de les copier les uns en dessous des autres comme dans l'exemple en "J23" pour une lecture rapide et clair ?

Merci a vous de m'aidé
 

Pièces jointes

Bonjour a tous et d'abord merci pour votre travail a tous

Dans l'exemple du fichier donné ici, est il possible via VBA (via bouton de formulaire) de copier les commentaires de plusieurs cellules exemple ici
"A1:A21"
et de les copier les uns en dessous des autres comme dans l'exemple en "J23" pour une lecture rapide et clair ?

Merci a vous de m'aidé
Bonjour,
Quelque chose comme en PJ ??
 

Pièces jointes

autre question, je suppose que de multiplier ce code par autant de bouton ce n'est pas possible ?
quelle est la marche a suivre dans ce cas ?

car j'avais dans l'idee de créer un bouton par jour du lundi au samedi

Option Explicit
'commentaire lundi
Sub commentaire()
Dim c As Range, Lig&, Plage
Range("J23:j" & Rows.Count).ClearContents
Lig = 23
Set Plage = Range("a1:a21") 'a définir
For Each c In Plage
On Error Resume Next
Cells(Lig, "j") = c.Comment.Text
If Err = 0 Then Lig = Lig + 1
Next
End Sub
'commentaire mardi
Sub commentaire()
Dim c As Range, Lig&, Plage
Range("J23:j" & Rows.Count).ClearContents
Lig = 18
Set Plage = Range("b1:b21") 'a définir
For Each c In Plage
On Error Resume Next
Cells(Lig, "j") = c.Comment.Text
If Err = 0 Then Lig = Lig + 1
Next
End Sub
'commentaire mercredi
Sub commentaire()
Dim c As Range, Lig&, Plage
Range("J23:j" & Rows.Count).ClearContents
Lig = 18
Set Plage = Range("c1:c21") 'a définir
For Each c In Plage
On Error Resume Next
Cells(Lig, "j") = c.Comment.Text
If Err = 0 Then Lig = Lig + 1
Next
End Sub
 
J ai donc crée plusieurs module avec le code et cela fonctionne !
mais toujours pas pu corriger la hauteur de ligne qui ce modifie quand la copie est faite !
Une proposition avec une liste de validation.
J'ai supposé que les jours étaient en cellule colonne A
Contrainte: pas de vide en colonne A
 

Pièces jointes

Une proposition avec une liste de validation.
J'ai supposé que les jours étaient en cellule colonne A
Contrainte: pas de vide en colonne A
excusez moi mais on a dus mal se comprendre le premier code fonctionne nickel et correspond a mes besoins, j'ai juste eu du mal a comprendre qu'il fallait plusieurs module avec autant de fois le code que de module avec bien sur une selection de cellules differente !

mais mon dernier souci c'est la deformation de la hauteur des ligne une fois les commentaires copier !
 
excusez moi mais on a dus mal se comprendre
mais mon dernier souci c'est la deformation de la hauteur des ligne une fois les commentaires copier !
Je crois que oui !

Pour formater la cellule
Ajoute après cette instruction
.Cells(Lig, "j") = c.Comment.Text
Celle ci-dessous
.Cells(Lig, "j").WrapText = False
 

Pièces jointes

Dernière édition:
bonjour jacky67

j'ai voulu tester le code sur un de mes fichier et je me trouve confronté a un probleme
premierement merci le code fonctionne nickel sur l'exemple.

par contre quand je veux me servir du code sur un autre fichier, si je ne sélectionne pas, par exemple une image qui se trouve sur la feuille avant l'action du code, la macro se déroule jusqu’à la fin, mais dans la meme cellule, les commentaires s'ecrire les uns derriere les autres mais efface le precedent et ainsi de suite !
jusqu'au dernier etpour ne laissé que celui ci

j'ai pensé au debut que la fusion de certaine cellule posé problème, mais cela ne vient pas de ce coté si !
 
Je crois que oui !

Pour formater la cellule
Ajoute après cette instruction
.Cells(Lig, "j") = c.Comment.Text
Celle ci-dessous
.Cells(Lig, "j").WrapText = False
bonjour jacky67

j'ai voulu tester le code sur un de mes fichier et je me trouve confronté a un probleme
premierement merci le code fonctionne nickel sur l'exemple.

par contre quand je veux me servir du code sur un autre fichier, si je ne sélectionne pas, par exemple une image qui se trouve sur la feuille avant l'action du code, la macro se déroule jusqu’à la fin, mais dans la meme cellule, les commentaires s'ecrire les uns derriere les autres mais efface le precedent et ainsi de suite ! jusqu'au dernier et pour ne laissé qu'un seul commentaire le dernier de la plage selectionné

j'ai pensé au debut que la fusion de certaine cellule posé problème, mais cela ne vient pas de ce coté si !
 

Pièces jointes

bonjour jacky67

j'ai voulu tester le code sur un de mes fichier et je me trouve confronté a un probleme
premierement merci le code fonctionne nickel sur l'exemple.

par contre quand je veux me servir du code sur un autre fichier, si je ne sélectionne pas, par exemple une image qui se trouve sur la feuille avant l'action du code, la macro se déroule jusqu’à la fin, mais dans la meme cellule, les commentaires s'ecrire les uns derriere les autres mais efface le precedent et ainsi de suite ! jusqu'au dernier et pour ne laissé qu'un seul commentaire le dernier de la plage selectionné

j'ai pensé au debut que la fusion de certaine cellule posé problème, mais cela ne vient pas de ce coté si !
Re...
Si ce n'est pas par clic d'un des 2 boutons, par quelle action sur la feuille la macro doit elle s'exécuter ?
**J'avoue ne pas vraiment comprendre le fonctionnement..
La colonne D est toujours un Lundi ??
La colonne E est toujours un Mardi ??
Etc...
***Ajoute au code l'instruction "on error goto 0"
et testes sur le pc ou cela ne fonctionnait pas
Code:
'commentaire lundi
Sub commentaire()
Dim c As Range, Lig&, Plage
Range("J31:j" & Rows.Count).ClearContents
Lig = 31
Set Plage = Range("D16:D115") 'a définir
For Each c In Plage
On Error Resume Next
Cells(Lig, "J") = c.Comment.Text
Cells(Lig, "J").WrapText = False
If Err = 0 Then Lig = Lig + 1
On Error GoTo 0
Next
End Sub
 
Dernière édition:
est ce que cela peu provenir de la version excel ? car sur 2010 (chez moi) cela fonctionne correctement !
j'y comprend rien ...
RE
Ceci fonctionne sans problème avec xl 2007
Sans dupliquer la macro x fois

**Autre version en V4
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
389
Retour