Supprimer des lignes vides MAIS...

Résolu
Pytou314 Messages postés 3 Statut Membre -  
 Pytou314 -
Bonjour,

Je veux faire un code pour supprimer toutes les lignes vides dans un fichier excel.

je sais que sur 5000 lignes, il y a des lignes vides mais je veux que le programme s'arrête quand il y a 2 lignes vides à la suite et me dire quel est le numéro de ligne.

Je ne sais pas quelle boucle utiliser: Do..loop, while, for...next.

Merci d'avance de l'aide apportée.

5 réponses

  1. Kusco Messages postés 559 Statut Membre 336
     
    C'est possible, par exemple tu peux faire ça comme ceci :


    Sub test_clic()

    aa = Range("A" & Rows.Count).End(xlUp).Row

    u = 0
    For i = 1 To aa
    If Range("A" & i) = "" Then
    u = u + 1
    Else
    u = 0
    End If
    If u > 1 Then
    MsgBox i
    Exit For
    Else
    End If
    Next i

    End Sub

    Dès qu'il trouve deux lignes vides alors une MsgBox s'ouvre et te dit de qu'elle ligne il s'agit. Ensuite la macro s'arrête.
    Est ce que tu aimerais qu'elle fasse quelque chose d'autre de spécifique ?
    1
  2. Pytou314 Messages postés 3 Statut Membre
     
    Merci Kusco de ta réponse. C'est génial.

    Avec seulement cette ligne, tu réponds à ma question:
    "aa = Range("A" & Rows.Count).End(xlUp).Row"
    Tu peux me la décrire stp par contre.

    J'aurais plein de questions car j'essaye de faire des macros depuis qq temps mais je m'attaque toujours à de trés gros codes et je ne les finis pas. Mais voilà, petit à petit, j'avance. et celle-là, j'y tiens.

    Merci encore pour tout. Et surement à bientôt sur le forum.
    0
  3. Kusco Messages postés 559 Statut Membre 336
     
    aa = Range("A" & Rows.Count).End(xlUp).Row
    'aa est une variable quelquonque. On l'utilise souvent pour des tableaux j'aurais plutôt du l'appeler o, u, y ou quelque chose comme ça, le nom importe peu mais ce sont les "moeurs"
    'Range donc pour sélectionner une cellule sous le format "A1"
    ' "A" correspond à la colonne A
    ' & permet de coller deux éléments ensemble notamment des variables.
    ' Rows.Count Rows comme lignes et Count comme compter. Donc ça compte le nombre de ligne de ta colonne.
    ' .End(xlUp).Row est une fonction qui permet en commençant par la fin, de remonter les lignes jusqu'à la dernière. En gros de trouver la dernière ligne utilisée.

    Tu peux utiliser aa = Range("A" & Rows.Count).End(xlUp).Row + 1 pour avoir la dernière ligne vide.

    N'hésites pas à me demander d'autres questions, je n'ai pas la science infuse mais je t'aiderais au maximum dans la mesure du possible.

    Et rappelle toi, aucune question n'est bête, le seul truc bête c'est de ne pas poser cette question ! ;)
    0
  4. Pytou314 Messages postés 3 Statut Membre
     
    Merci encore pour ton aide.

    Mais j'avance mon programme doucement.
    Voilà ce que j'ai fais. Tu verras surement des défauts.

    J'ai qq notions de VBA.

    PROGRAMME:

    Option Explicit
    
    Dim sReference As String
    Dim sNumeroAffaire As String
    
    Dim i As Integer
    Dim iDerniereLigne As Integer
    
    Dim sVTE() As String
    
    Sub Etude()
    
    sNumeroAffaire = Application.InputBox("Entrez le numéro d'affaire", "Demande de numéro d'affaire", "SY01683")
    
    iDerniereLigne = Range("A" & Rows.Count).End(xlUp).Row
        
        With ThisWorkbook.Sheets(1)
            For i = 1 To iDerniereLigne
                    sReference = .Cells(i, 1).Value
                If Left(sReference, 7) = sNumeroAffaire Then
                    ReDim Preserve sVTE(1 To 2, 1 To i)
                    sVTE(1, i) = .Cells(i, 1).Value
                    sVTE(2, i) = .Cells(i, 2).Value
                End If
            Next i
            MsgBox "c'est fini"
        End With
    End Sub


    Le programme est loin d'être fini.
    Par exemple: Dans la variable tableau, il y a aura des doublons, il faudra que je les supprime.

    A+
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Bonjour,

      Pourquoi déclarer toutes tes variables en tête de Module? Tu t'en sers dans plusieurs procédure?
      Si c'est pas le cas :
      Option Explicit
      
      Sub Etude()
      Dim sReference As String
      Dim sNumeroAffaire As String
      Dim i As Integer
      Dim iDerniereLigne As Integer
      Dim sVTE() As String


      Ensuite, pour éviter les doublons, tu peux demander le dictionnaire de Mr Boisgontier...
      0
    2. Kusco Messages postés 559 Statut Membre 336
       
      Et une petite astuce car pijaku est mille fois plus calé que moi, tu peux déclarer des variables en une fois :
      Dim sReference, sNumeroAffaire, sVTE as String
      Dim i, iDerniereLigne as Integer

      Tu peux mettre utiliser un autre système :
      Dim sReference$, sNumeroAffaire$, sVTE$, i&, iDerniereLigne&

      Tu as tous les symboles dans ce tableau :
      https://www.excel-pratique.com/fr/vba/variables.php
      0
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Et une petite astuce car pijaku est mille fois plus calé que moi, tu peux déclarer des variables en une fois :
      Et................................................................ non!
      NON!!
      NNNNNNNOOOOOOOOOOONNNNNNNNNNNNNNNNNNN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

      pardon...

      Cette déclaration :
      Dim sReference, sNumeroAffaire, sVTE as String 

      équivaut à :
      Dim sReference As Variant, sNumeroAffaire As Variant, sVTE as String 


      Il faut écrire systématiquement le type de chaque variable. Par défaut VBA attribue la valeur Variant...

      Donc :
      Dim sReference As String, sNumeroAffaire As String, sVTE As String 


      Ou encore, pour les "faignants" :
      Dim sReference$, sNumeroAffaire$, sVTE$ 
      0
    4. Kusco Messages postés 559 Statut Membre 336
       
      Ahahahah :D

      Autant pour moi pour les Variant, j'ai du mal comprendre à un moment. Je vais corriger de suite tous mes fichiers excel !
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Pytou314
     
    Bonjour,

    Merci à vous deux pour toutes ces informations très intéressantes, j'en prends note et j'essaye de les appliquer.

    A très bientôt sur le forum.
    0