Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

6 réponses
Avatar
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

6 réponses

Avatar
Michd
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
Avatar
Jacquouille
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
Avatar
Michd
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
Avatar
Jacquouille
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
Avatar
Michd
Il n'y a pas de différence, c'était l'expression qu'avait utilisée Fredo!
MichD
Avatar
Jacquouille
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