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

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
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
Supporter XLD
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 :confused:
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 !!!:eek::oops::rolleyes:
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
Supporter XLD
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

@arthour973
Tu as édité ton message et changé de fichier!!!:mad::rolleyes:
Et ce n'est pas J22 mais K17 !
(tu vas finir par m'énerver o_O 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
 

Discussions similaires

Réponses
8
Affichages
481

Statistiques des forums

Discussions
312 206
Messages
2 086 214
Membres
103 158
dernier inscrit
laufin