Affichage d'un texte long dans un textbox en vba

Résolu
Layali20 -  
 Layali20 -
Bonjour,

j ai un probleme concernant l affichage des textbox ,je veux afficher un texte qui contient plusieurs ligne dans un textbox vba , et ça ne marche pas ,lors de l'affichage ,tous le texte s'affiche en une seule ligne;
je vous prie de me proposer des solutions
et merci d'avance

5 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour à tous
    normalement, un textbox est fait pour saisir du texte et non pour l'afficher.
    pour cela on peut utiliser le "label" ( le A majuscule de la boite à outils) qui va à la ligne automatiquement.

    Et avec les propriétés on peut donner un fond blanc style texbox , centrer le texte etc.
    3
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
       
      Bonjour Michel,

      « qui va à la ligne automatiquement.»
      Il faut toutefois s'assurer que la propriété WordWrap soit toujours sur sa valeur par défaut : WordWrap=True

      Cordialement
      Patrice
      0
      1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention  
         
        Wordwrap ayant la valeur true par défaut il est inutile d'écrire wordwrap=true
        sinon , si on suit cette logique, il faut effectuer cela sur TOUTES les propriétés de type booléen du controle textbox...
        0
    2. Layali20
       
      svp ou je vais mettre la proprieté WordWrap?
      voila le code :
      Private Sub ComboBox1_Change()
      Dim H As Integer
      With Sheets("Feuil1")
      For H = 2 To .Range("a65536").End(xlUp).Row
      zone_nom.AddItem .Range("a" & H).Value
      Next H
      End With


      End Sub


      'Pour le bouton Modifier
      Private Sub CommandButton2_Click()
      Dim Ligne As Long
      Dim I As Integer
      Dim Ws As Worksheet
      If MsgBox("Confirmez-vous la modification de ce capteur ?", vbYesNo, "Demande de confirmation de modification") = vbYes Then
      If Me.zone_nom.ListIndex = -1 Then Exit Sub
      Ligne = Me.zone_nom.ListIndex + 2
      Ws.Cells(Ligne, "B") = zone_nom
      For I = 1 To 7
      If Me.Controls("TextBox" & I).Visible = True Then
      Ws.Cells(Ligne, I + 2) = Me.Controls("TextBox" & I)
      End If
      Next I
      End If
      End Sub



      Private Sub quit_Click()

      Unload Me

      End Sub
      Private Sub CommandButton1_Click()
      Dim L As Integer
      If MsgBox("Confirmez-vous l'insertion de ce nouveau capteur ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
      L = Sheets("formulaire").Range("a65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
      Range("A" & L).Value = ComboBox1

      Range("B" & L).Value = TextBox1
      Range("C" & L).Value = TextBox2
      Range("D" & L).Value = TextBox3
      Range("E" & L).Value = TextBox4
      Range("F" & L).Value = TextBox5
      Range("G" & L).Value = TextBox6
      Range("H" & L).Value = TextBox7
      Range("I" & L).Value = TextBox8
      Range("J" & L).Value = TextBox9
      End If
      End Sub




      Private Sub zone_nom_Change()

      With Sheets("Feuil1")
      TextBox1 = .Cells(zone_nom.ListIndex + 2, 3)
      TextBox2 = .Cells(zone_nom.ListIndex + 2, 4)
      TextBox3 = .Cells(zone_nom.ListIndex + 2, 5)
      TextBox4 = .Cells(zone_nom.ListIndex + 2, 6)
      TextBox6 = .Cells(zone_nom.ListIndex + 2, 7)
      TextBox7 = .Cells(zone_nom.ListIndex + 2, 8)
      TextBox8 = .Cells(zone_nom.ListIndex + 2, 9)
      TextBox9 = .Cells(zone_nom.ListIndex + 2, 10)
      TextBox10 = .Cells(zone_nom.ListIndex + 2, 11)
      End With

      End Sub
      Private Sub UserForm_Initialize() 'Permet d'initialiser les valeurs dans les zones souhaitées

      Dim H As Integer
      With Sheets("Feuil1")
      For H = 2 To .Range("a65536").End(xlUp).Row
      zone_nom.AddItem .Range("b" & H).Value
      Next H
      End With


      End Sub
      0
  2. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
     
    As-tu regardé la propriété MultiLine ?
    0
  3. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Bonjour,

    Mets les propriétés MultiLine et WordWrap à True
    0
  4. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Bonjour,

    « svp ou je vais mettre la proprieté WordWrap? »

    En général dans l'initialisation du formulaire :

    Private Sub UserForm_Initialize()
    'Permet d'initialiser les valeurs dans les zones souhaitées
    Dim H As Integer
    
      Me.TextBox1.WordWrap = True
      Me.TextBox2.WordWrap = True
      Me.TextBox3.WordWrap = True
      Me.TextBox4.WordWrap = True
      '.....
    
      With Sheets("Feuil1")
        For H = 2 To .Range("a65536").End(xlUp).Row
          zone_nom.AddItem .Range("b" & H).Value
      Next H
      End With
    
    End Sub

    Cordialement
    Patrice
    0
    1. Layali20
       
      Bonjour Patrice ;
      j ai essayé ,mais ça n as pas marché
      0
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
       
      mets un exemple de ton fichier sur https://www.cjoint.com/
      0
    3. Layali20
       
      bonjour
      voila le lien du fichier http://www.cjoint.com/c/EFflyAGkKlY
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Bonjour,

    Comme je t'avais dit, il faut WordWrap et aussi Multiline :

    Private Sub UserForm_Initialize()
    Dim H As Integer
    Dim C As Control
    
      With Sheets("Feuil1")
        For H = 2 To .Range("a65536").End(xlUp).Row
          zone_nom.AddItem .Range("b" & H).Value
        Next H
      End With
    
      For Each C In Me.Controls
        If TypeName(C) = "TextBox" Then
          C.MultiLine = True
          C.WordWrap = True
        End If
      Next C
    
    End Sub
    0
    1. Layali20
       
      merci bccccccp patrice ,je vous remercie chaleureusement ,mon probleme est resolu garce à votre aide
      0