Range("A1:A20").SpecialCells(xlCellTypeBlanks).Row

Le
Fredo P.
Bonjour Tlm
Juste que je viens de faire une trouvaille sans doute que d'aucun la
connaisse dèjà.
Sur une feuille vierge (Feuil1), toute neuve, remplissez en colonne "A"
une à pas plus de 5 cellules sans en passer une (sans vide) et sans
faire quoique ce soit sur les suivantes.
Copiez dans un module le code suivant: Specialcells ne trouvera pas de
cellule correspondante. remplissez la septième cellule, Specialcells
indiquera 6, déplacez ensuite la 7 vers la 6, la sept devient vide,
Specialcells indiquera 7.
Étonnant non?

> Sub essai()
> Application.EnableEvents = False
> Sheets("Feuil1").Cells(1, 2) = Range("A1:A20").SpecialCells(xlCellTypeBlanks).Row
> Application.EnableEvents = True
> End Sub
Fredo P.
http://cdrm4f.jimdo.com
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michd
Le #26486300
Bonjour,
Avec Excel 2016, cette ligne de code renvoie une erreur (1004) en supposant que la feuille est
nouvelle et totalement vide.
S = Range("A1:A20").SpecialCells(xlCellTypeBlanks).Row
Pour que cela fonctionne, tu peux utiliser ceci. Je sais, c'est un peu différent sur les anciennes
versions.
'-----------------------------------------------
Sub test()
On Error Resume Next
If IsEmpty(Range("A1:A20").SpecialCells(xlCellTypeBlanks)) Then
X = 1
Else
X = Range("A1:A20").SpecialCells(xlCellTypeBlanks).Row
End If
Cells(1, 2) = X
End Sub
'-----------------------------------------------
MichD
Jacquouille
Le #26486321
Bonjour,
Le fait d'aller en A7, puis de revenir en A6 sans rien écrire, ne met-il pas
Excel dans une position de "mémoire", comme si A7 avait été occupée..... ce
qui pourrait lui faire dire qu'il y a erreur. non?
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"Michd" a écrit dans le message de groupe de discussion :
plrufh$rrg$
Bonjour,
Avec Excel 2016, cette ligne de code renvoie une erreur (1004) en supposant
que la feuille est
nouvelle et totalement vide.
S = Range("A1:A20").SpecialCells(xlCellTypeBlanks).Row
Pour que cela fonctionne, tu peux utiliser ceci. Je sais, c'est un peu
différent sur les anciennes
versions.
'-----------------------------------------------
Sub test()
On Error Resume Next
If IsEmpty(Range("A1:A20").SpecialCells(xlCellTypeBlanks)) Then
X = 1
Else
X = Range("A1:A20").SpecialCells(xlCellTypeBlanks).Row
End If
Cells(1, 2) = X
End Sub
'-----------------------------------------------
MichD
Michd
Le #26486332
On peut faire aussi comme ceci :
'---------------------------------------------
Sub test()
Dim X As Long
With Worksheets("Feuil1") 'nom feuille à adapter
'Si la feuille est vide, la première ligne
'disponible est 1
If IsEmpty(.UsedRange) Then
X = 1
Else 'Si non
'Ceci retourne la première ligne
'disponible de la colonne A entre
'A1:A20. Une erreur est générée s'il n'y a
'aucune ligne vide dans cette plage de cellules
'C'est ce pourquoi il faut ajouter :
On Error Resume Next
X = .Range("A1:A20").SpecialCells(xlCellTypeBlanks).Row
End If
.Cells(1, 2) = X
End With
End Sub
'---------------------------------------------
MichD
Jacquouille
Le #26486458
Bonjour
J'ai testé ce brin de filet de macro.
Il renvoie bien la première ligne vide de la plage.
C'est un peu la cousine de derL, qui donne la dernière ligne occupée de la
plage.
Question:
Pourquoi .Cells(1,2)=X ?
Et non [B1] = X
Y a-t-il vraiment une différence.
Bonne fin de WE à tous.
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"Michd" a écrit dans le message de groupe de discussion :
pls864$1cs5$
On peut faire aussi comme ceci :
'---------------------------------------------
Sub test()
Dim X As Long
With Worksheets("Feuil1") 'nom feuille à adapter
'Si la feuille est vide, la première ligne
'disponible est 1
If IsEmpty(.UsedRange) Then
X = 1
Else 'Si non
'Ceci retourne la première ligne
'disponible de la colonne A entre
'A1:A20. Une erreur est générée s'il n'y a
'aucune ligne vide dans cette plage de cellules
'C'est ce pourquoi il faut ajouter :
On Error Resume Next
X = .Range("A1:A20").SpecialCells(xlCellTypeBlanks).Row
End If
.Cells(1, 2) = X
End With
End Sub
'---------------------------------------------
MichD
Michd
Le #26486499
Il n'y a pas de différence, c'était l'expression qu'avait utilisée Fredo!
MichD
Jacquouille
Le #26486511
merci
Bonne soirée

Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"Michd" a écrit dans le message de groupe de discussion :
pluerh$p7b$
Il n'y a pas de différence, c'était l'expression qu'avait utilisée Fredo!
MichD
Publicité
Poster une réponse
Anonyme