Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 cellule vide

MOmichel

XLDnaute Junior
bonjour
j'aimerai avoir une explication j'ai un tableau avec X lignes ci dessous
lorsque je veux sélectionner la premiere ligne non vide da la colonne E en appliquantt le code

Range("e20000").Select
' Boucle tant que pas vide
Do While (IsEmpty(ActiveCell))
NbLigne = NbLigne - 1
Selection.Offset(-1, 0).Select
Loop
Selection.Offset(1, 0).Select
Range(ActiveCell, ActiveCell.End(xlDown)).Select
Selection.ClearContents
Range("e20000").Select
Selection.End(xlUp).Select

je viens me positionner sur la cellule E,91 et non sur la E79 ?





par avance merci pour vos commentaires
 
Solution
Bonjour le fil

Fonctionne chez moi
(toujours sur le fichier demo.xlsm)
VB:
Sub PremièreVideDepuisBas()
Dim LObj As ListObject, premCellVideDepuisBas&
Set LObj = ActiveSheet.ListObjects("Tsource")
With LObj.Range.Columns(5)
premCellVideDepuisBas = .Cells(.Rows.Count).End(xlUp).Row + 1
End With
MsgBox premCellVideDepuisBas, vbInformation, "N°Ligne"
LObj.Range(premCellVideDepuisBas, 5).Select
End Sub

chris

XLDnaute Barbatruc
Bonjour

A priori
  1. tu bosses sur un tableau structuré et non une plage
  2. ton code pour trouver une cellule non vide en partant de la cellule 20000 est un non sens avec boucle et select
    Range("E20000").end(Xlup) suffit
 

vgendron

XLDnaute Barbatruc
Bonjour
Pour trouver la ligne de la Dernière CelluleNON vide de la colonne A
Derligne=range("A" &rows.count).end(xlup).row
hello All

et la PREMIERE (j'ai mal lu la demande)
FirstLine=range("E1").end(xldown).row
 

chris

XLDnaute Barbatruc
RE à tous

S'il s'agit d'un tableau structuré
Derligne=range("A" &rows.count).end(xlup).row
ne fonctionne pas contrairement à
FirstLine=range("E1").end(xldown).row
qui fonctionne dans certaines situations mais pas toutes

Il faut tester avec quelque chose comme
VB:
For Each cellule In [NomTableau].ListObject.ListColumns(5).DataBodyRange
ou
With [NomTableau].ListObject.ListColumns(5).DataBodyRange
   For i = .Rows.Count + .Row - 1 To .Row Step -1
       If IsEmpty(.Cells(i, 1)) Then ...
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour le fil

Avec ce bidule, on peut tendre vers le vide, non?

VB:
Sub DerLig_ListObject()
Dim tlObj As ListObject, Der_Lig_Tableau&
Set tlObj = ActiveSheet.ListObjects(1)
Der_Lig_Tableau = tlObj.ListColumns(1).Range.Rows.Count
MsgBox Der_Lig_Tableau & " (avec l'entête)", 64, "Nombre de ligne d'un Tableau:"
MsgBox tlObj.DataBodyRange.Rows.Count
End Sub
 

MOmichel

XLDnaute Junior
lorsque je veux sélectionner la premiere ligne non vide da la colonne E en appliquantt le code
ce que je voulais demander c'est
lorsque je veux sélectionner la premiere cellule non vide de la colonne E en appliquant le code ci dessous
 

MOmichel

XLDnaute Junior
bonjour je viens d'essayer mais message d'erreur "erreur de compilation Next sans for"

voila ce que j'ai recopie de ta solution
For Each Cellule In [tsource].ListObject.ListColumns(5).DataBodyRange
If IsEmpty(Cellule) Then
Next Cellule
 

Staple1600

XLDnaute Barbatruc
Re

Et c'est là qu'on se demande (ou qu'on peut le faire)
Mais diable, pourquoi le demandeur n'a pas joint de fichier Excel dès son premier message?
Oui, on peut se le demander (en affichant un air las et fatigué , directe conséquence de rabâcher cette rengaine pour la 12729ième fois)
 

soan

XLDnaute Barbatruc
Inactif
Bonjour,

un exemple :
VB:
For Each Cellule In [tsource].ListObject.ListColumns(5).DataBodyRange
  If IsEmpty(Cellule) Then Cellule.EntireRow.Select
Next Cellule
et plus d'erreur de compilation « Next sans For » !

attention : si tu veux supprimer les lignes pour lesquelles Cellule est vide,
tu dois utiliser une boucle qui balaye les lignes de bas en haut, afin que
le compteur de la boucle ne soit pas « perturbé » !


soan
 

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
2
Affichages
322
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…