Combler cellules vides d'une liste en remontant les cellules non vides

anto59

XLDnaute Junior
Bonjour à tous,
un petit problème se pose à moi et mes recherches n'ont rien donné.

Je suis en train de créer un programme en visual basic, et lors de l'éxécution, je fais apparaitre plusieurs listes (avec des données provenant d'une base access) dans des colonnes. Mais parfois, il peut y avoir des cellules vides.

Comme l'indique le titre du sujet, j'aimerais éviter les trous dans la liste en remontant les cellules non vides.

Merci d'avance pour votre aide.
 

tototiti2008

XLDnaute Barbatruc
Re : Combler cellules vides d'une liste en remontant les cellules non vides

Bonjour anto59,

Les données sont liées à Access par des données externes ?
Si oui, le plus simple ne serait il pas de modifier la requête SQL qui pointe vers Access pour ne pas faire apparaître les vides ?
 

mromain

XLDnaute Barbatruc
Re : Combler cellules vides d'une liste en remontant les cellules non vides

Bonjour anto59,

Voici un essai dans le fichier joint.
VB:
Private Sub Btn_Completer_Click()
Dim derLigne As Long, iLigne As Long

    With ThisWorkbook.Sheets("Feuil1")
        
        'récupérer la dernière ligne non vide de la colonne a
        derLigne = .Range("A" & .Rows.Count).End(xlUp).Row
        
        'boucler sur toutes les lignes (de la dernière à la première)
        For iLigne = derLigne To 1 Step -1
            'si la cellule A<iLigne> est vide, lui donner la valeur de A<iLigne+1>
            If .Range("A" & iLigne).Text = "" Then .Range("A" & iLigne).Value = .Range("A" & iLigne + 1).Value
        Next iLigne
    End With
End Sub
a+
 

Pièces jointes

  • Classeur1.zip
    10.1 KB · Affichages: 77
  • Classeur1.zip
    10.1 KB · Affichages: 85
  • Classeur1.zip
    10.1 KB · Affichages: 85
Dernière édition:

anto59

XLDnaute Junior
Re : Combler cellules vides d'une liste en remontant les cellules non vides

Bonjour à vous deux,
tout d'abord merci pour vos réponses.

à mromain : merci mais ce n'est pas trop ce que je cherche vu que ça copie les cellules au lieu de les remonter.

à tototiti : c'est vrai que ça serait une solution à laquelle je n'est pas pensé.
Reste plus qu'à trouver comment utiliser la commande SELECT en enlevant les champ vide.
Merci
 

mromain

XLDnaute Barbatruc
Re : Combler cellules vides d'une liste en remontant les cellules non vides

Re bonjour,
Tototiti,

Essaye avec ce code :
VB:
Private Sub Btn_Completer_Click()
Dim derLigne As Long, iLigne As Long

    With ThisWorkbook.Sheets("Feuil1")
        
        'récupérer la dernière ligne non vide de la colonne a
        derLigne = .Range("A" & .Rows.Count).End(xlUp).Row
        
        'boucler sur toutes les lignes (de la dernière à la première)
        For iLigne = derLigne To 1 Step -1
            'si la cellule A<iLigne> est vide, lui donner la valeur de A<iLigne+1>
            If .Range("A" & iLigne).Text = "" Then .Range("A" & iLigne).EntireRow.Delete
        Next iLigne
    End With
End Sub
a+
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : Combler cellules vides d'une liste en remontant les cellules non vides

Bonjour, tototiti, mromain,
un code vu sur le site de JB, adapté à l'exemple fourni par mromain;).
Je poste pour m'exercer et également pour que les VBAistes me corrigent ou complètent.
A+
 

Pièces jointes

  • SupprimerCellulesVides.xls
    31.5 KB · Affichages: 128

Piksaw

XLDnaute Junior
Re : Combler cellules vides d'une liste en remontant les cellules non vides

Bonjour, tototiti, mromain,
un code vu sur le site de JB, adapté à l'exemple fourni par mromain;).
Je poste pour m'exercer et également pour que les VBAistes me corrigent ou complètent.
A+
Hello tout le monde

J'ai une liste de texte en colonne G a partir de G8 et au maximum G222

si il y a des cellule vider entre G8 et G222 je voudrait qu'il remonte l'information pour combler les vides
J'ai récupérer ce code qui répond presque a ce que je cherche, mais je n'arrive pas le modifier


version original

Private Sub Btn_Completer_Click()

With ThisWorkbook.Sheets("Feuil1")
[A:A].SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
End With
End Sub



version que j'ai modifier

Private Sub Btn_Completer_Click()

With ThisWorkbook.Sheets("test")
[G8:G222].SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
End With
End Sub

si quelqu'un aurait une piste ça serait cool :)
 

Discussions similaires

Statistiques des forums

Discussions
312 338
Messages
2 087 394
Membres
103 537
dernier inscrit
alisafred974