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

XL 2013 Atteindre la 1ère cellule vide d'une plage

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous,

Toujours sur mon classeur de travail de plus de 50.000 lignes, je voudrais, pour éviter des "promenades" atteindre la ligne dans laquelle une cellule n'aurait pas été remplie.

Mes recherches m'ont permis de trouver un code que j'ai légèrement modifié (mais pas assez LOL) et qui fonctionne bien ou presque pour moi :
forum excel-pratique.com par Banzai64 » 22 Décembre 2011, 16:57 que je remercie au passage.
Code:
Private Sub Worksheet_SelectionChange(ByVal R As Range)
If Not Intersect(R, Range("i7:t10000")) Is Nothing And R.Count = 1 Then
Dim L As Integer
Application.ScreenUpdating = False
With Sheets("Feuil1")
     .Range("i7:t10000").Find("", .Range("i7"), xlValues, , 1, 1, 0).Select
End With
End If
ActiveCell.Select
'R.Offset(0, 0).Select
'ActiveWindow.ScrollRow = Selection.Row
Application.ScreenUpdating = True
End Sub

Voici mon souci :
Mon besoin
Atteindre la 1ère cellule vide de la plage I7:T10000 = ici I14

Ce que fait le code
Atteint la 1ère cellule vide en ligne 7 = ici J7

Le fichier test en pièce jointe complètera, je l'espère, mon explication.

Si vous aviez la solution, ça m'arrangerait bien

Avec mes remerciements, je vous souhaite à toutes et à tous un très bon WE pas trop froid,
Amicalement,
Lionel,
 

Pièces jointes

  • Test atteindre 1ere cellule vide plage.xlsm
    18.7 KB · Affichages: 14
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

@arthour973
Déjà mieux vaut dimer en Long
Dim L As Integer
Dim L As Long

Et un petit exemple qui peut toujours servir
VB:
Sub PremiereVide(Plage As Range)
Plage.End(xlDown).Offset(1, 0).Select
End Sub
Sub xtest()
On Error Resume Next
PremiereVide Range("A1")
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

@arthour973
Je n'ai jamais dit que cela changerait quelque chose
Je disais juste qu'il vaut mieux déclarer en Long
(notamment si on dispose des dernières version d'Excel)
(Je te laisse chercher pourquoi cela est conseillé )

By the way, j'ai ajouté des choses dans l'édition de mon précédent message
 

Usine à gaz

XLDnaute Barbatruc
Re-JM,

Code:
Sub PremiereVide(Plage As Range)
Plage.End(xlDown).Offset(1, 0).Select
End Sub

Sub xtest()
On Error Resume Next
PremiereVide Range("A1")
End Sub

J'ai du mal comprendre
J'ai créé une plage nommée "Plage",
J'ai ajouté tes codes en modules standard
Quand j'exécute xtest il ne se passe rien.
 

Staple1600

XLDnaute Barbatruc
Re

Je n'ai jamais écrit que tu devais mon exemple dans ton classeur.

Cette macro était un exemple à tester dans un classeur vierge dans lequel tu auras mis quels données en a1:a50 par exemple
Ensuite efface une cellule dans cette plage puis lance ma macro.

C'est bien la première cellule vide qui est alors sélectionnée
 

Staple1600

XLDnaute Barbatruc
Re

@arthour973
No comment !!!
VB:
Sub PremiereVide(Plage As Range)
Plage.Select '.End(xlDown).Offset(1, 0)
End Sub
Dans ma macro, ce que tu as mis en commentaire ne l'est pas chez moi, non !!!!

Pourquoi ne pas avoir simplement fait exactement le test décrit dans mon précédent message ?
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Effectivement, tu as raison

J'ai remis ton code en modifiant juste A1 en I1 et ça fonctionne pour la colonne I
Mais il atteint toujours le colonne I et pas la colonne de la 1ère ligne vide de la plage.
Voir fichier joint.

je continue à chercher.
 

Pièces jointes

  • Test atteindre 1ere cellule vide plage + feuille JM.xlsm
    24.3 KB · Affichages: 16

Staple1600

XLDnaute Barbatruc
Re

Dans la feuille JM, la première cellule vide est bien la cellule I17.
C'est bien cette cellule que sélectionne ma macro, non ?

Donc ma macro exemple fonctionnait depuis le message#2!!!
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

@arthour973
Tu as édité ton message et changé de fichier!!!
Et ce n'est pas J22 mais K17 !
(tu vas finir par m'énerver et c'est mauvais pour ma digestion)

Et avec cette macro?
VB:
Sub Le_Neant_Est_Il_Vide()
On Error GoTo Staple
Range("I7:T45").SpecialCells(xlBlanks)(1).Select
MsgBox "Première cellule vide: " & ActiveCell.Address
Exit Sub
Staple:
MsgBox "La plage de cellule: " & Range("I7:T45").Address(0, 0) & "ne contient aucune cellule vide!", vbInformation
End Sub
 

Usine à gaz

XLDnaute Barbatruc
LOL, c"est vrai mais il faut bien que je teste pour voir si le code atteint la 1ère cellule vide de la 1ère colonne ou la cellule est vide.

Merci vraiment JM pour ta gentillesse et ta patience.
Je teste ton nouveau code et je reviens
 

Usine à gaz

XLDnaute Barbatruc
Alors là, c'est super nickel

Merci JM d'avoir été encore là et pour le temps que tu m'as consacré.
ça marche super.
Voilà un code qui me rend un très grand service et certainement utiles pour d'autres.
Amicalement,
Lionel,
 

Discussions similaires

Réponses
8
Affichages
728
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…