Problème de récupération de note en cellule active
Bonjour,
Cette macro fonctionne aléatoirement je dirais :
Sub NoteRécupération()
Dim celluleActive As Range
Dim commentaire As String
' Définir la cellule active
Set celluleActive = ActiveCell
' Vérifier si la cellule a un commentaire
If Not celluleActive.comment Is Nothing Then
' Récupérer le texte du commentaire
commentaire = celluleActive.comment.Text
' Mettre le commentaire dans la cellule
celluleActive.Value = commentaire
' Déclarer la cellule au format standard
celluleActive.NumberFormat = "General" ' Format standard
Else
MsgBox "La cellule active n'a pas de commentaire.", vbExclamation, "Erreur"
End If
End SubMon problème est que j'ai des classeurs excel qui "vivent" et parfois j'ai des #REF qui arrivent car je change de fichiers, par exemple une formule devient :
=SIERREUR(RECHERCHEV(A2;#REF!$A$1:$B$512;2;FAUX);"") alors qu'avant j'avais
=SIERREUR(RECHERCHEV(A2;'20250106_switchshowFD51'!$A$1:$B$512;2;FAUX);"") mais si je supprime la source et bien #REF.
Donc j'ai une macro qui met les formules en commentaire et une autre macro qui récupère le commentaire pour le mettre dans la cellule active.
Cette macro s'arrête sur
celluleActive.Value = commentairealors que la valeur est bien contenue dans commentaire.
Quelqu'un a t'il une idée ? Sachant que j'essaie de mettre l'ordre Comment avec un "C" majuscule mais VBE/VBA me le change systématiquement avec un "c" miniscule ...
Cordialement,
Zest.
Bonjour,
Alors tout d'abord je trouve votre procédé assez tordu, quel serait l'objectif final recherché ? Il est normal que vous créiez des erreurs #REF en supprimant la source, vous avez bien identifié le problème. Mais ce que je ne comprends pas c'est pourquoi "sauvegarder" les formules dans un commentaire pour ensuite les réinsérer ? Si la source a été supprimée, alors la formule n'est pas valide… Ensuite, il y a surement moyen de se passer des commentaires.
Ensuite sur les points techniques, utilisez Range.Formula property (Excel) | Microsoft Learn (formule en anglais) ou Range.FormulaLocal property (Excel) | Microsoft Learn (dans votre langue windows, français) pour entrez une formule dans une cellule. Pas Range.Value (c'est pour les valeurs/les constantes). Cependant votre code, même s'il est incorrect, devrait fonctionner. S'il y a une erreur c'est que la formule est invalide, probablement puisque vous avez supprimé le fichier => Erreur #REF de nouveau.
Quant au c majuscule/minuscule, c'est un bug du VBE : d'abord sachez que le code VBA n'est pas Sensibilité à la casse — Wikipédia. En d'autres termes, il ne distingue pas les majuscules des minuscules. Donc d'un point de vue fonctionnel, ce "problème" n'a aucune importance. Quant à sa source, vous avez certainement écrit, à un moment donné, une variable avec comme nom "comment". A partir de là, le correcteur de code automatique remplace le "Comment" qu'il connait par le votre, et même si vous le supprimez, ça reste. A part supprimer le module, et copier/coller votre code dans un nouveau, je ne connais pas de solution miracle. Mais bon, encore une fois, c'est juste visuel.
Bonjour zest,
Le (pseudo) problème du c majuscule peut être lié au fait que tu as, à un moment ou un autre, défini une variable nommée "comment". Le problème perdure même si la variable a été supprimée et si en tapant par exemple "commentaire = celluleActive.comment." tu as bien la proposition des propriétés donc il n'y a pas réellement de problème. Ce n'est peut-être pas la meilleure méthode mais je n'en connais pas d'autre, tu peux réobtenir l'écriture correcte en recréant une variable publique "Comment" et en la supprimant ensuite.
Pour le reste : que veut dire "cette macro s'arrête sur" ? tu as un message d'erreur ?, il ne se passe rien ?, autre ?
Pour pouvoir te répondre de manière pertinente, il faudrait que tu communiques un fichier anonymisé.
Cdlt,
Cylfo
ps : @saboh12617
Bonjour Saboh12617 et bonjour Cylfo,
Je vous remercie de vous être penché sur mon souci et pour votre réponse.
Pour répondre à la question quand et comment la macro s'arrête, c'est lors de la restitution du commentaire dans la cellule.
excel me sort le message erreur 1004 :
Puis dans la macro :
Et lorsque je dis que cela fonctionne aléatoirement c'est que cette macro marche pour restituer par exemple une formule du style :
='20250106_switchshowFD71'!A1
par contre plante pour me restituer une formule du style :
=SIERREUR(SI(G2=""; "";SI(G2="CPU"; RECHERCHEV(A2; RefLiens!$I$2:$V$19748;14;FAUX);SI(G2="ISL";"LienISL"&H2;SI(G2="UNITE";SI(DROITE(H2;2)="MM";RECHERCHEV(A2;Source!$O$68:$Z$99;12;FAUX);RECHERCHEV(A2;RefLiens!$J$2:$U$19748;12;FAUX));""))));"")
Pour ce qui est de la majuscule, je suis d'accord et je comprends.
Cordialement,
Zest.
Bonjour,
Êtes-vous certain que la formule, si vous l'écrivez telle quelle dans votre fichier, ne crée pas d'erreur ?
Avez-vous essayé avec Range.FormulaLocal comme je vous l'avais indiqué ? Obtenez-vous le même résultat ?
Si oui, l'erreur vient certainement des "" dans la formule. Vous savez qu'il sont utilisés pour délimiter les Strings en VBA.
Personnellement, avec .FormulaLocal je n'ai pas d'erreur, et avec .Value j'en ai une. Veuillez essayer la proposition faite svp.
Merci Saboh12617,
Pour la solution et pour avoir insisté !!! J'avais suivi le lien, lu la page machinalement, mais cela ne m'avait pas plus parlé que ça ...
En utilisant cell.FormulaLocal la macro fonctionne correctement.
Encore un grand merci,
Cordialement,
Zest.
Je vous en prie. Si quelque chose n'est pas clair ou que vous ne voyez pas comment faire, n'hésitez pas à demander une clarification !
Bonne fin de journée.