IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Zone Commentaires dans Userform


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut Zone Commentaires dans Userform
    Bonjour,

    Je souhaiterais savoir s'il est possible (je le pense, mais....j'ai besoin d'un petit coup de main...) de faire une zone commentaire dans un Userform....

    Je m'explique : j'ai un Userform, je souhaiterai, au passage de la souris par exemple, faire apparaitre une zone commentaire, comme on le fait dans une feuille excel....

    Dans le Userform, il y a des combobox, des listes (en référence à des plages contenues dans une feuille), des zone texte, etc....c'est assez lourd visuellement, donc je souhaiterais alléger le tout....

    Par exemple : dans une Textbox, il y a le nom/prénom d'une personne, j'aimerai qu'en passant sur un bouton (ou autre, l'idéal serait sur la textbox directement...), s'affiche ses coordonnées (téléphone, adresse, ville, code postal, etc....). En effet, ces coordonnées ne sont pas principalement prioritaires (donc "inutiles" dans l'affichage de l'Userform), mais si un collègue veut avoir des informations complémentaires, un simple passage souris lui donnerait les infos....

    Les infos contenues dans la zone commentaires (téléphone, adresse, etc...) seraient issues de la feuil2 A2:A10

    Une petite idée et/ou aide ?

    En vous remerciant,

  2. #2
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonsoir Éric, bonsoir le forum,

    Regarde la propriété [ControlTipText]. Avec un code du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim I As Byte
    Dim CMT As String
     
    For I = 2 To 10
         CMT = IIF(CMT = "", Sheets("Feuil2").Cells(I, 1).Value, CMT & " - " & Sheets("Feuil2").Cells(I, 1).Value)
    Next I
    Me.TextBox1.ControlTipText = CMT
    À plus,

    Thauthème

    Je suis Charlie

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    Merci Thautheme,

    Toujours là pour rendre service, merci

    Oui, ça correspond "presque" au résultat recherché....en fait, j'ai les données séparées par "-", il faudrait que je puisse avoir en liste....j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim I As Byte
    Dim j As Byte
    Dim CMT(10)
     
    For j = 1 To 10
    For I = 1 To 10
         CMT(j) = IIf(CMT(j) = "", Sheets("Feuil2").Cells(I, 1).Value, CMT(j))
    Next I
     
    Me.TextBox1.ControlTipText = CMT(j)
    Next j
    mais je n'ai que "adresse" qui s'affiche....
    Bon, tu me diras, normal, vu que la variable J reste toujours la même (= 1), mais aurais-tu une autre solution ?

    En te remerciant,

  4. #4
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Re,

    En liste ?! Si tu veux dire sur plusieurs lignes j'ai essayé ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim I As Byte
    Dim CMT As String
     
    For I = 2 To 10
         CMT = IIf(CMT = "", Sheets("Feuil2").Cells(I, 1).Value, CMT & Chr(13) & Sheets("Feuil2").Cells(I, 1).Value)
    Next I
    Me.TextBox1.ControlTipText = CMT
    Avec aussi Chr(10) (saut de ligne) mais c'est toujours sur une seule ligne. J'ai l'impression que la propriété [ControlTipText] n'accepte qu'une seule et unique ligne. L'aide VBA ne dit rien à ce sujet. Ne te reste plus qu'à attendre le passage d'un balèze de ce forum... Et ils sont nombreux !
    Sinon il te faut rajouter une ComboBox avec la suite des données que l'utilisateur pourras faire défiler si besoin...
    À plus,

    Thauthème

    Je suis Charlie

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    À vrai dire, je n'ai pas testé. J'ai juste regardé.

    Thauteme a quelques concaténations (opérateur & ) que toi tu n'as pas mis. Si je ne dis pas de connerie ton j va te donner une valeur unique et pas un "assemblage" de valeurs.

    Ceci dit, je n'ai pas fait de recherche, mais je me demande s'il n'y a pas une limite au nombre de caractères que l'on peut mettre dans un ControlTipText.

    Ajout

    Tautheme, désolé pour le télescopage.

    Je viens de penser à une chose. Tu pourrais essayer un Textbox (invisible/visible et locked = true, si tu veux) pour afficher tes informations complémentaires.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  6. #6
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Re,

    Citation Envoyé par clementmarcotte Voir le message
    Si je ne dis pas de connerie

    Arf ! Trop tard... C'est dit !
    À plus,

    Thauthème

    Je suis Charlie

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    Merci clementmarcotte (la connerie du "J", c'est moi qui l'ai faite... ),
    Merci Thautheme,

    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.TextBox1.ControlTipText = Sheets("Feuil2").Range(Cells(2, 1), Cells(10, 1))
    mais cela ne fonctionne pas....

    Oui, c'est sous forme de liste que ce serait l'idéal...
    A2 = Téléphone
    A3 = Adresse
    A4 = Ville
    etc....
    ce n'est QUE de la consultation....

    J'ai essayé ton code Thautheme, cela commence à ressembler à ce que je cherche (je "vois" bien téléphone, adresse, ville, etc....sous forme de ligne), mais pour une meilleure lecture, il faudrait que dans le commentaire cela apparaisse sous format :

    Téléphone : 06.......
    Adresse : le bonheur sur terre
    Ville : Saint mandrier
    etc jusqu'à la ligne 10

    (j'habite Saint Mandrier, donc.....)

    (et sans passer par une combobox, le survol souris que tu m'as présenté est trop top !!!!, il faudrait juste qu'il puisse apparaitre sous forme de liste.....
    En colonne A, on pourrait mettre les entêtes (Téléphone, Adresse, etc....) et en colonne B, les valeurs (06.....,Le bonheur etc....)

    Après plusieurs essais, j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub UserForm_Initialize()
     
    Dim I As Byte
    Dim CMT As String
     
    For I = 2 To 10
         CMT = IIf(CMT = "", Sheets("Feuil2").Cells(I, 1).Value & Sheets("Feuil2").Cells(I, 2).Value, CMT & Chr(13))
    Next I
    Me.TextBox1.ControlTipText = CMT
    End Sub
    et j'arrive à avoir :
    Adresse : Saint Mandrier
    mais je n'ai pas les autres lignes......

    En vous remerciant pour votre aide,

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    Ayé, j'ai trouvé ..... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub UserForm_Initialize()
     
    Dim I As Byte
    Dim CMT As String
     
    For I = 2 To 10
         CMT = IIf(CMT = "", Sheets("Feuil2").Cells(I, 1).Value & Sheets("Feuil2").Cells(I, 2).Value, CMT & Chr(13) & Sheets("Feuil2").Cells(I, 1).Value & Sheets("Feuil2").Cells(I, 2).Value)
    Next I
    Me.TextBox1.ControlTipText = CMT
    End Sub
    cela fonctionne nickel !!!!!

    Merci Thautheme, tu m'as ouvert la voie.....
    Merci,

    A+ pour de prochaines aventures....

  9. #9
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Re,

    Ha bon, ça ça marche chez toi ?!... Chez moi toujours une seule ligne...
    À plus,

    Thauthème

    Je suis Charlie

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    Merci Thautheme,

    Oui, ça marche chez moi (suis sous Excel Mac), mais je vais l'essayer au boulot, sous environnement Windows....tu me mets le doute

    Je t'ai mis en PJ le fichier....

    Juste une dernière petite question, à moins que je fasse un nouveau post.. :

    Pourrait on avoir le même résultat à partir d'une listbox : admettons que dans ma listbox, j'ai la liste des Noms, au survol du nom, que le commentaire s'affiche (=au lieu de passer par un textbox, on passe par une listbox ?)

    Au fait le format de la zone commentaire est modifiable ? (taille)

    En te remerciant,

    A+
    Fichiers attachés Fichiers attachés

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    Bon, ben problème...Le code de hier fonctionne sur Excel pour Mac, mais pas sous Excel 2003...
    Une petite aide ? et/ou idées ?

    En vous remerciant

  12. #12
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    Merci Bbil, toi aussi, toujours là pour rendre service, merci,

    C'est vrai que j'avais fait ma recherche sur le site avec "Commentaire" et pas "infobulle"...et donc ce post m'a "échappé"...

    Merci pour le lien,

    J'ai donc fait un essai, je vois le principe de passer par un label, mais j'ai toujours le problème de mettre les informations sous forme de ligne.... :
    ligne 1 : Téléphone
    ligne 2 : adresse
    ligne 3 : mail

    "Toto" peut représenter le nom, donc je peux chercher dans Feuil1, mais comment afficher dans le label les informations sous forme de ligne, car là, je n'ai QUE l'affichage de la première colonne, c'est à dire la valeur "txt" ?

    Peut-on afficher une plage de cellule A2:B10 dans ce label ? car ça pourrait correspondre à mon problème...

    En te remerciant,

  14. #14
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    bonjour,

    tu as eu plein d'exemple plus haut pour insérer une retour à la ligne dans une chaîne de caractères , aucun ne t'on inspiré ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label1.Caption = "Téléphone" & vbCrLf & "adresse" & vbCrLf & "mail"

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    Merci Bbil,

    Si, si j'ai de l'inspiration, comme tu as pu le voir dans le post avec Thautheme, je fais des essais, essaye de comprendre, etc...

    Je croyais avoir compris la logique, mais.....je pense que je formule mal le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For r = 1 To 10
        If rng.Cells(r, 3) = "Toto" Then txt = IIf(Len(txt), txt & vbCrLf & rng.Cells(r, 1), rng.Cells(r, 1))
      Next
      With Me.Label2: .Caption = "Téléphone" & vbCrLf & "adresse" & vbCrLf & "mail" .Visible = False: End With
    End Sub
    Car il ne fonctionne pas...j'ai copié/collé ta ligne de code, mais....je sais que je fais une erreur (puisque je suis en message d'alerte )

    Je réitère ma dernière question : peut-on mettre dans un label une plage de cellule ? ça serait peut-être la solution, à moins que tu puisse m'expliquer comment formuler le label2.caption.....

    En te remerciant,

  16. #16
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par ericdev67 Voir le message
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
      With Me.Label2: .Caption = "Téléphone" & vbCrLf & "adresse" & vbCrLf & "mail" .Visible = False: End With
    End Sub
    Car il ne fonctionne pas...j'ai copié/collé ta ligne de code, mais....je sais que je fais une erreur (puisque je suis en message d'alerte )
    ...
    c'est cette écriture !!! commence par remplacer tous tes : par des retour à la ligne et l'on en rediscute avec un code lisible ..

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    Gloups, j'étais certain que j'allais me faire engu....
    j'avais recopié le code du post...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For r = 1 To 10
        If rng.Cells(r, 3) = "Toto" Then txt = IIf(Len(txt), txt & vbCrLf & rng.Cells(r, 1), rng.Cells(r, 1))
      Next
      With Me.Label2.Caption = "Téléphone" & vbCrLf & "adresse" & vbCrLf & "mail"
      End With
    En te remerciant,

  18. #18
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    ok désolé ces : ne viennent pas de toi...

    tu les as bien supprimé mais pourquoi as tu modifié le code du coup ton with n'est plus utile et le .Visible à disparu.... tu n'utilise plus la variable .txt qui est "calculée" dans la boucle for en fonction
    du contenu de la plage A2..C10
    essai de comprendre l'exemple donné dans le lien il faut l'adapter à ton cas as tes données .. tu ne nous as pas dit sur qu'elle feuille de quel classeur (le classeur contenant ton code ou un autre ?) et sur plage ce trouve tes données ... les "étiquettes" ( Nom,Téléphone, mail...) sont telle présente sur ta feuille où doivent-elles être rajoutée...

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    Merci Bbil,

    C'est bon, après plusieurs essais (surtout de compréhension...), je pense avoir trouvé la solution (puisque cela fonctionne), voir PJ, Feuil1

    Par contre, pourrait on avoir le même résultat à partir d'une listbox : admettons que dans ma listbox, j'ai la liste des Noms, au survol du nom ("Toto" dans l'exemple), que le commentaire s'affiche (=au lieu de passer par un textbox, on passe par une listbox) ?

    J'ai mis en Feuil2 des exemples pour faire des essais....cela fonctionne avec le textbox, mais pas avec une listbox..Je pense qu'il faudrait un élément déclencheur (mais lequel ?) et/ou une astuce pour le survol de la souris.....(mais laquelle...)

    merci pour ton aide,
    Fichiers attachés Fichiers attachés

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    Ayé, j'ai trouvé, j'ai mis en PJ le fichier si des débutants DVP comme moi cherchent la solution... lancer la macro et le Userform récupère les données de la Feuil2.

    Le top du top aurait été que cela se fasse avec un survol souris , mais ......la solution clic fonctionne, donc....suis content.....

    merci Thautheme,
    Merci Bbil,

    A+ pour de prochaines aventures,
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. zone de liste dans userform
    Par orcinus dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 10/09/2013, 22h41
  2. Des commentaires dans le fichier Boot.ini
    Par Furius dans le forum Windows
    Réponses: 6
    Dernier message: 27/10/2005, 11h41
  3. Comment créer un commentaire dans une cellule d'Excel ?
    Par WebPac dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 26/04/2005, 10h23
  4. [CR]Comment faire de longs commentaires dans le code
    Par liberio dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 07/06/2004, 21h45
  5. [VBA-E]modifier les attributs d'un commentaire dans une cellule
    Par Olivier vb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/03/2004, 11h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo