besoin d'aide sur vba pour une condition - VB/VBA/VBS - Programmation
Marsh Posté le 10-05-2005 à 17:54:46
If Not Range("E" & lignesel + 5).Comment.Text = "" Then
Ce serai bon ?
Marsh Posté le 11-05-2005 à 09:16:01
J'ai peut-être répondu trop vite (matin diffffiiicccciiiiillleeeeee)
J'ai un magnifique message d'erreur:
Erreur d'éxécution '91' variable objet ou variable de bloc with non définie pour
Dim lignesel As Long
lignesel = ScrollBar1.Value
With Sheets("feuille1" )
Range("E" & lignesel + 5).Select
If Not Range("E" & lignesel + 5).Comment.Text = "" Then
TextBox4.Text = Range("E" & lignesel + 5).Comment.Text
End If
End With
Dans le cas si le prgm à la tête suivante, il affiche le même message d'erreur (la cellule 6 n'a pas de commentaire)
If Not Range("E" & 6).Comment.Text = "" Then
TextBox4.Text = Range("E" & 6).Comment.Text
End If
ps: la variable lignesel me sert pour relier une multitude de textbox à une scrollbar
une idée de génie pourrait me sortir d'affaire,
merci d'avance
Marsh Posté le 11-05-2005 à 10:19:10
Le_rameur a écrit : J'ai peut-être répondu trop vite (matin diffffiiicccciiiiillleeeeee) |
Salut,
J'ai regardé très rapidement mais je me demande si ton Range a une syntaxe correct en fait...
Mais un msgbox pour voir quel tête à ton Range. La syntaxe n'est peut-être pas correct pour Excel.
Marsh Posté le 11-05-2005 à 10:36:42
Salut gfa,
Excel accepte si j'introduis un commentaire dans cette cellule,
le truc ce qu'il faut que excel arrive à faire la différence entre une cellule qui a un commentaire et une cellule qui n'a pas de commentaire.
J'avais pensé que le problème vient de la définition de ma variable, puisque dès que j'introduis &lignesel même si mes cellules ont un commentaire, ça marche plus, snife...
If Not Range("E" & lignesel + 5).Comment.Text = "" Then
TextBox4.Text = Range("E" & lignesel + 5).Comment.Text
Est-ce que le truc ne viendrait pas de la différence entre value et text?
Mais je ne sais pas comment contourné ce pb
Marsh Posté le 11-05-2005 à 10:55:18
ton idée est bonne mais g tjrs ce message d'erreur
je suis bloqué de chez bloqué
bonne journée est perspective...
Marsh Posté le 11-05-2005 à 12:28:02
Le_rameur a écrit : Salut gfa, |
Ben c'est bien ce que je disais... Si ton code fonctionne avec un Range défini "en dur" et plus lorsque tu ajoute ta variable lignesel, c'est que le problème vient de là! Regarde quelle tête à ton Range ("E" & lignesel + 5). Je pense que l'erreur vient de là...
Essaie peut-être "E" & lignesel & "5" qui me paraît plus correct au niveau de la syntaxe. Je ne sais pas comment VB réagit si tu utilises l'opérateur d'addition avec un string (lignesel) et un integer (5). Je pense que si ta variable lignesel contient aussi un integer, il va bêtement faire l'addition. Par contre si elle contient de l'alphanumérique je sais pas trop ce que ça va donner... Et comme je ne sais pas ce que tu cherches à obtenir
En tous les cas, met un MsgBox("E" & lignesel + 5) pour voir quelle gueule à ton Range. Tu seras peut-être surpris
A+
Marsh Posté le 11-05-2005 à 13:37:18
Attention : Il n'additionnera rien du tout. Au contraitre, si lignesel vaut 20, il ira chercher la ligne 205.
Marsh Posté le 11-05-2005 à 13:53:39
en effet comme le dit Knakes si je marque ("E" & lignesel + 5) le msgbox m'indique plus du tout la bonne ligne.
En revanche avec,
If Not Range("E" & 6).Comment.Text = "" Then
TextBox4.Text = Range("E" & 6).Comment.Text
End If
le msgbox m'indique la bonne ligne.
mais j'ai toujours l'erreur d'exécution '91' (variable objet ou variable de bloc with non définie) avec la ligne
If Not Range("E" & 6).Comment.Text = "" Then en jaune.
Et c grave le bordel qd je redefinis les variables avec la scrollbar
Marsh Posté le 11-05-2005 à 13:55:01
OUPS, trompé de ligne excusez-moi
If Not Range("E" & lignesel + 5).Comment.Text = "" Then
TextBox4.Text = Range("E" & lignesel + 5).Comment.Text
End If
Marsh Posté le 11-05-2005 à 14:17:22
Corrige avec cela :
If Not IsEmpty(Range("E" & lignesel + 5).Comment) Then
...
Marsh Posté le 11-05-2005 à 14:35:22
Ca plante car l'objet comment n'existe pas lorsqu'il ya pas de commentaire
Je pense que tu peux faire plus simple, il ya moyen de recuperer directement tout les objets comment d'une feuil
Citation : |
si tu veux récuperer le contenu du commentaire :
> CMT.comment.text
si tu veux récuperer le contenu de la cellule :
> CMT.parent.value
si tu veux récuperer la ligne et la colonne de la cellule :
> CMT.parent.row ou . column
have fun
Marsh Posté le 11-05-2005 à 14:38:09
tu vas me trouvé trop mauvais, mais je n'ai fais que décaler l'erreur 91 sur la 2° ligne.
J'ai tenté plusieurs truc sans succés
le prgm marche qd:
If Not IsEmpty(Range("E" & lignesel + 5).Comment) Then
TextBox4.Text = (Range("E" & 5).Comment.Text)
End If
mais il n'affiche la valeur de la cellule E5 qui comporte un commentaire.
Le prgm ne marche plus lorsque que je remplace 5 par 6 (la cellule 6 ne comporte pas de commentaire)
le prgm ne marche plus qd
If Not IsEmpty(Range("E" & lignesel + 5).Comment) Then
TextBox4.Text = (Range("E" & lignesel + 5).Comment.Text)
End If
Je ne sais pas ce que tu en pense mais je trouve ce lignesel +tot chiant ;-(
Je sais pas j'ai épuisé le peu que je connaissais si tu as une idée n'hésite pas...
Marsh Posté le 11-05-2005 à 19:14:36
Confirme le fait que: Ca plante car l'objet comment n'existe pas lorsqu'il ya pas de commentaire
Outre l'idée, de traiter la collection, que propose Fusion_Sadam; essaie ceci:
Dim YaComment As Boolean
Dim LeComment As String
Dim lignesel As Long
lignesel = ScrollBar1.Value
'...
On Error Resume Next
With Cells(lignesel + 5, 5)
LeComment = .Comment.Text
YaComment = .Comment.Parent.Address = .Address
End With
If YaComment Then
TextBox4.Text = LeComment
Else
MsgBox "Circulez..."
End If
On Error GoTo 0
'...
Marsh Posté le 12-05-2005 à 09:36:14
Merci beaucoup Dahlo, je viens de découvrir ta réponse (hier soir j'étais trop dépité pour retenter ce que je n'avais pas réussi en une journée, prise de tête totale).
ça marche parfaitement après insertion dans mon prgm, tu me sors d'une grosse galère ;-)
Merci encore
A+
Marsh Posté le 12-05-2005 à 17:04:03
Sinon ca y'a aussi je crois qui marche très bien :
TextBox4.Text = Range("E" & lignesel + 5).Comment.Text & " "
C'est un peu du bidouillage mais au moins c pas prise de tete... et pas besoin de if ... ni de rien d'autre.
Marsh Posté le 10-05-2005 à 17:15:16
Re tout le monde,
Etant débutant en programmation ce qui vous paraît simpliste me semble bien compliqué.
J'ai une condition a réaliser et je ne suis pas arrivé au bout d'1 apm (d'où mon alias)
Enfin je vous expose le truc prise de t^te en espérant qu'1 ame charitable veut bien m'aider
J'ai établi un userform permettant de visualiser les données contenu dans une base de données; Certaines données possèdent un commentaire (mais pas toutes!)
l'idée est de faire apparître le commentaire dans 1 textbox;
jusque là pas de pb
Mais si g une cellule qui n'a pas de commentaire alors g un message d'erreur
Donc la condition à traduire en VBA est
Si la cellule possède un commentaire alors
on affiche ce dernier dans le textbox
sinon le textbox reste vide
soit
if la cellule possède un commentaire then
TextBox4.Text = Range("E" & lignesel + 5).Comment.Text
else
TextBox4.Text=""
End if
est-ce qlq'1 arriverait à développer la petite condition en rouge SVP
Merci d'avance,