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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
'-----------------------------------------------
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
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
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$1@gioia.aioe.org...
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
'-----------------------------------------------
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
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
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
'---------------------------------------------
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
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
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$1@gioia.aioe.org...
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
'---------------------------------------------
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
Il n'y a pas de différence, c'était l'expression qu'avait utilisée Fredo! MichD
Il n'y a pas de différence, c'était l'expression qu'avait utilisée Fredo!
Il n'y a pas de différence, c'était l'expression qu'avait utilisée Fredo! MichD
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
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$1@gioia.aioe.org...
Il n'y a pas de différence, c'était l'expression qu'avait utilisée Fredo!
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