XL 2010 Première cellule vide d'une plage

  • Initiateur de la discussion Initiateur de la discussion Phil_2059
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Phil_2059

XLDnaute Nouveau
Bonjour, Je cherche à activer la première cellule vide au sein d'une plage (navigation de gauche à droite, de haut en bas)...
J'ai trouvé une macro mais qui ne fonctionne pas toujours. Auriez vous une solution ? Merci d'avance de votre aide. Phil.
Sub PremiereCelluleVide()
Set r = Range("Tableau3")
For i = 1 To r.Rows.Count
If r.Cells(i).Formula = "" Then
Set PremiereVide = r.Cells(i)
PremiereVide.Select
Exit Sub
End If
Next
End Sub
 
Solution
Bonjour @Phil_2059 , bienvenue sur XLD 🙂.
Bonjour @chris 😉

En partant de votre code, chacune des macros ci-dessous devrait le faire :
VB:
Sub PremiereCelluleVide()
   Set r = Range("Tableau3")
   For i = 1 To r.Count     ' r contient r.Count cellule et non  r.Rows.Count (nombre de ligne)
      If r.Cells(i).Formula = "" Then Set PremiereVide = r.Cells(i): PremiereVide.Select: Exit Sub
   Next i
End Sub

Sub PremCellVide()
   For Each x In Range("Tableau3")
      If x.Formula = "" Then Set PremiereVide = x: x.Select: Exit Sub
   Next
End Sub

Cette dernière est la plus rapide (respectivement 4,1 s ; 2,3 s ; 0,25 s pour un tableau de 1 million de cellules avec les cellules vides vers...
Bonjour @Phil_2059 , bienvenue sur XLD 🙂.
Bonjour @chris 😉

En partant de votre code, chacune des macros ci-dessous devrait le faire :
VB:
Sub PremiereCelluleVide()
   Set r = Range("Tableau3")
   For i = 1 To r.Count     ' r contient r.Count cellule et non  r.Rows.Count (nombre de ligne)
      If r.Cells(i).Formula = "" Then Set PremiereVide = r.Cells(i): PremiereVide.Select: Exit Sub
   Next i
End Sub

Sub PremCellVide()
   For Each x In Range("Tableau3")
      If x.Formula = "" Then Set PremiereVide = x: x.Select: Exit Sub
   Next
End Sub

Cette dernière est la plus rapide (respectivement 4,1 s ; 2,3 s ; 0,25 s pour un tableau de 1 million de cellules avec les cellules vides vers la fin du tableau) :
Code:
Sub PremCelluleVide()
   Set r = Range("Tableau3"): t = r.Value
   For i = 1 To UBound(t): For j = 1 To UBound(t, 2)
      If t(i, j) = "" Then
         If r.Cells(i, j).Formula = "" Then Set PremiereVide = r.Cells(i, j): PremiereVide.Select: Exit Sub
      End If
   Next j: Next i
End Sub
 
Dernière édition:
Bonjour @fanch55 😉 ,

Et avec l'instruction ci-dessous, cela ne marche pas ? VB:
VB:
[Tableau3].SpecialCells(xlCellTypeBlanks).Select
Sauf dans un seul cas. Celui de la "chaine vide". Ce cas est illustré dans le fichier joint. Et pour l'instant, MS n'a pas fourni de fonction pour contourner cet écueil de manière concise.
 

Pièces jointes

Re @cp4,

Effectivement, les deux écritures ne sont pas équivalentes :

  • Dans le cas d'un tableau structuré, Range("Tableau3") représente les données du tableau sans la barre de titre.
  • Dans le cas d'une plage nommée, Range("Tableau3") représente les données du tableau y compris la barre de titre.

Je n'ai vu nulle part que c'était un tableau structuré dans la question.
 
Dernière édition:
Bonjour à tous,

Sur 1 000 000 de cellules chez moi :

- la dernière macro de mapomme post #3 s'exécute en 0,27 seconde.

- celle-ci en 0,45 seconde :
VB:
Sub RechercheCelluleVide()
On Error Resume Next
Range("Tableau3").Find("", , xlValues, , xlByRows).Select
End Sub
A+
 
Bonjour @fanch55 😉 ,

Sauf dans un seul cas. Celui de la "chaine vide". Ce cas est illustré dans le fichier joint. Et pour l'instant, MS n'a pas fourni de fonction pour contourner cet écueil de manière concise.
Salut @mapomme ,
En fait ce n'est pas la chaine vide qui pose problème, c'est sa couleur de fond :
il semblerait que la fonction considère que xlCellTypeBlanks ne s'applique pas à une cellule dont la couleur n'est pas "automatique" alors qu'aucun problème avec l'encadrement, allez comprendre.....😡

Edit: je comprends plus , j'ai voulu vérifier, je ne reproduis plus le même problème ou cela devient aléatoire ... vraiment une fonction à fuir ...
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
652
Retour