Excel VBA suppression de ligne vide

Résolu
supermoun Messages postés 39 Statut Membre -  
 zertree -
Bonjour à tous
Dans un formulaire, j'utilise un textbox qui remplie une
cellule dans une feuille avec l'option Multiline.
Comment faire pour supprimer les ligne vides dans le cas
ou l'on appui plusieurs fois de suite sur la touche entrée.
Merci d'avance.

2 réponses

  1. Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   214
     
    bonjour supermoun,

    je te propose ce code, à adapter à tes données :
    Sub SupprLignesVides()
        ' désactiver le rafraîchissement de l'écran pour accélérer le traitement
        Application.ScreenUpdating = False
        ' désactiver les alertes pour empêcher l'affichage
        ' des messages du genre "Voulez-vous etc."
        Application.DisplayAlerts = False
        
        ' se placer sur la dernière ligne contenant des données
        Range("A65536").End(xlUp).Select
        Do
            If IsEmpty(ActiveCell) Then
                ActiveCell.EntireRow.Delete
            End If
            ActiveCell.Offset(-1, 0).Select
        Loop Until ActiveCell.Row = 1
        
        Application.ScreenUpdating = True
        Application.DisplayAlerts = True
    End Sub
    
    21
    1. supermoun Messages postés 39 Statut Membre 7
       
      Bonjour
      j'ai bien reçu le message mais je me suis mal exprimé.

      C'est dans le cas ou l'on fait plusieurs fois entrée dans le textbox.

      Si vous avez la solution ?

      A+
      0
      1. Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   214 > supermoun Messages postés 39 Statut Membre
         
        dans ce cas, la fonction PurgerChaine() devrait te convenir
        Function PurgerChaine(Chaine As String) As String
            ' Chaine = contenu de la textbox
            Dim strTampon   As String
            Dim intNbCar    As Integer
            Dim intC1       As Integer
            Dim intC2       As Integer
            
            strTampon = Chaine
            Do
                intNbCar = Len(strTampon)
                ' dernier caractère de la chaîne
                intC1 = Asc(Mid(strTampon, intNbCar, 1))
                ' avant-dernier caractère de la chaîne
                intC2 = Asc(Mid(strTampon, intNbCar - 1, 1))
                
                ' la passage à la ligne se traduit par la succession
                ' des caractères Chr(10) et Chr(13)
                If intC1 = 10 And intC2 = 13 Then
                    ' donc si on les détecte en fin de chaine, on les supprime
                    strTampon = Left(strTampon, Len(strTampon) - 2)
                End If
                ' la boucle va s'effectuer tant qu'elle trouvera le couple
                ' Chr(10) et Chr(13) en fin de chaîne
            Loop Until intC1 <> 10 And intC2 <> 13
            ' la fonction PurgerChaine() renvoie le contenu
            ' de la TextBox purgé des retour-chariots intempestifs
            PurgerChaine = strTampon
        End Function
        fais appel à cette fonction avant de transférer le contenu du textbox dans la feuille.

        j'ai commenté le code, mais si tu as des questions, n'hésite pas :-)
        1
      2. supermoun Messages postés 39 Statut Membre 7 > Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention  
         
        Essais concluants au niveau du textbox.
        Merci encore pour ce partage du savoir.
        A+
        0
    2. zertree
       
      Mercccii !
      Très utile :)
      0
  2. supermoun Messages postés 39 Statut Membre 7
     
    Excel VBA suppression de ligne vide
    2