Définir si une cellule possède un commentaire depuis VB

D

Damos 25

Guest
Bonjour à Tous,

Dans une feuille excel un certain nombre de cellules possède un commentaire.

Depuis VB, je récupère la valeur du commentaire à l’aide de la fonction :
toto = ActiveCell.Comment.Text

Cependant si la cellule ne possède pas de commentaire, alors VB me renvoie l’erreur suivante :
"Erreur d’exécution 91 :Variable objet ou variable de bloc with non définie"

Quelqu’un connaîtrait-il un test qui me permette de définir si la cellule active possède un commentaire ou non ?

D’avance merci.

A+
Damos
 
J

Jean-Marie

Guest
Bonsoir

il y a dans les macro XL4, une fonction qui retourne la présence d'un commentaire dans la cellule active Lire.cellule(46).

Dans VBA ExecuteExcel4Macro("GET.CELL(46)") retourne VRAI ou FAUX, si la cellule active contient un commentaire.

Bonne soirée

@+Jean-Marie
 
D

Damos 25

Guest
Jean-Marie,

Merci pour ton aide, cela fonctionne parfaitement.

Je suppose que c’est l’argument 46 correspond au commentaire de la cellule et qu’en fonction de cet argument on peut obtenir d’autres informations.

Je vais cependant essayer de poursuivre mes tests pour voir si VB offre la possibilité d’obtenir l’info sans passer par les macros XL4.

A+
Damos
 
T

Ti

Guest
l'utilisation raisonnée de On Error Resume Next permet de s'affranchir des contraintes de VBA, ton problème en est un bon exemple. Donc pour ne pas avoir d'erreur tu peux écrire :

On Error Resume Next
toto = ActiveCell.Comment.Text
'éventuellement tu réactives le contrôle d'erreurs par un :
On Error Goto 0

C'est la façon la plus simple de procéder.
 
J

Jean-Marie

Guest
Re...

Ti, je perds mon latin, qu'elle est la solution, Le On Error Resume Next
, Len(Worksheets("données").Range("data" + no).NoteText) ou ExecuteExcel4Macro("GET.CELL(46)").

Ti, tu parles des contraintes lesquelles ?.

@+Jean-Marie
 
T

Ti

Guest
Salut Jean-Marie
Les contraintes de VBA, ce sont tous ces cas où il renvoie une erreur quand il ne trouve pas ce qu'on lui demande, alors qu'il aurait été si simple de renover une valeur Nothing (pour une variable objet) ou une chaîne vide (comme dans le cas de ce commentaire). Il faut donc trouver des astuces pour passer outre, notamment en désactivant les erreurs, ce qui d'ailleurs n'est pas sans risque, puisque si dans les options de VBA on a indiqué "Arrêt sur toutes les erreurs" alors on aura un arrêt sur erreur même avec le On Error Resume Next. Heureusement, cette option n'est pratiquement jamais cochée...
Je pense que l'utilisation des macros Excel 4 est à éviter dans du VBA, chaque fois qu'on le peut, puisque ces macros ne sont qu'un reliquat d'une époque révolue (oups, je ne devrais pas dire ça au président de la SPAM :))
 
D

Damos 25

Guest
Bonjour à tous,

Cela fait quelques jours que je n'ai pas pu me connecter au forum mais je vois que le fil plutôt bien progressé entre temps.!

Merci à tous pour votre participation.

Je pense que je vais partir sur une solution 100% VBA avec le On error, qui pourra de plus me permettre de filtrer quelques autres légers problèmes.

A+
Damos
 

Discussions similaires

Statistiques des forums

Discussions
314 017
Messages
2 104 582
Membres
109 083
dernier inscrit
Stef06