Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1401 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  besoin d'aide sur vba pour une condition

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

besoin d'aide sur vba pour une condition

n°1078161
Le_rameur
Posté le 10-05-2005 à 17:15:16  profilanswer
 

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  :cry: (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  :ange: SVP
 
Merci d'avance,

mood
Publicité
Posté le 10-05-2005 à 17:15:16  profilanswer
 

n°1078227
knakes
Posté le 10-05-2005 à 17:54:46  profilanswer
 

If Not Range("E" & lignesel + 5).Comment.Text = "" Then
 
Ce serai bon ?


---------------
now : do nothing
n°1078809
Le_rameur
Posté le 11-05-2005 à 08:42:03  profilanswer
 

Oui, c'est bon! un grand merci ;-)

n°1078851
Le_rameur
Posté le 11-05-2005 à 09:16:01  profilanswer
 

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

n°1078942
gfa
Posté le 11-05-2005 à 10:19:10  profilanswer
 

Le_rameur a écrit :

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


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.

n°1078979
Le_rameur
Posté le 11-05-2005 à 10:36:42  profilanswer
 

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

n°1079013
fusion_sad​am
:D
Posté le 11-05-2005 à 10:49:53  profilanswer
 

au hasard: essayes avec null au lieu de ""

n°1079028
Le_rameur
Posté le 11-05-2005 à 10:55:18  profilanswer
 

ton idée est bonne mais g tjrs ce message d'erreur
 
je suis bloqué de chez bloqué
 
bonne journée est perspective...

n°1079243
gfa
Posté le 11-05-2005 à 12:28:02  profilanswer
 

Le_rameur a écrit :

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...


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+

n°1079317
knakes
Posté le 11-05-2005 à 13:37:18  profilanswer
 

Attention : Il n'additionnera rien du tout. Au contraitre, si lignesel vaut 20, il ira chercher la ligne 205.


Message édité par knakes le 11-05-2005 à 13:37:44

---------------
now : do nothing
mood
Publicité
Posté le 11-05-2005 à 13:37:18  profilanswer
 

n°1079336
Le_rameur
Posté le 11-05-2005 à 13:53:39  profilanswer
 

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

n°1079341
Le_rameur
Posté le 11-05-2005 à 13:55:01  profilanswer
 

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

n°1079412
knakes
Posté le 11-05-2005 à 14:17:22  profilanswer
 

Corrige avec cela :
 
If Not IsEmpty(Range("E" & lignesel + 5).Comment) Then
...


---------------
now : do nothing
n°1079453
fusion_sad​am
:D
Posté le 11-05-2005 à 14:35:22  profilanswer
 

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 :


Dim Cmt as Variant
 
For Each Cmt in thisworkbook.sheets(TaFeuil).comments
    ...
next


 
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
 :hello:

n°1079464
Le_rameur
Posté le 11-05-2005 à 14:38:09  profilanswer
 

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...

n°1079473
Le_rameur
Posté le 11-05-2005 à 14:39:34  profilanswer
 

Fusion_Sadam je vais essayé ton idée ;-)

n°1079965
dahlo
Posté le 11-05-2005 à 19:14:36  profilanswer
 

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
'...

n°1080532
Le_rameur
Posté le 12-05-2005 à 09:36:14  profilanswer
 

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+

n°1081137
Le_Phasme
Posté le 12-05-2005 à 17:04:03  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  besoin d'aide sur vba pour une condition

 

Sujets relatifs
demande aide pour regex pas facileAide sur word et VBA
Besoin d'aide pour balise a hrefBesoin d'aide pour lancer un flash sur le disque, à partir d'une page
besoin d'aide pour le code d'1 graphiqueDemande de l'aide dans le domaine de la visionnique
besoin d'aide pour un projet 
Plus de sujets relatifs à : besoin d'aide sur vba pour une condition


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR