Fonction : recherche de cellule vide sur plage

  • Initiateur de la discussion Initiateur de la discussion CactusX
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

CactusX

Guest
Bonjour le Forum,

Cette fonction permet d'identifier la première cellule vide à partir d'une plage indiquée et de retourner le résultat dans une autre cellule. Ca fonctionne, cependant il doit y avoir + simple pour le code.

Certainement une histoire de déclaration de variable.
Quelqu'un a t-il autre chose à proposer sous XL97 ?

Merci à vous.


Sub MEdercel(colonne As String, debut As Byte, fin As Byte, Rxy As String)

' Appelé par :
' Call MEdercel("A", 10, 100, "B1")
' soit : Colonne de recherche, Ligne de début de recherche, Ligne de fin de recherche, cellule pour le retour

Dim z As String
For x = debut To fin
z = colonne & Trim(Str(x))
If Range(z) <> "" Then
x = x + 1
Range(colonne & x).Select
If Range(colonne & x) = "" Then
Range(Rxy) = ActiveCell.Row
Exit Sub
End If
End If
Next
End Sub
 
SAlut Cactus, le Forum

Oui il y a plus simple, ici par exemple on retourne la Liste des Cellules Vide dans une MsgBox :

Sub Blank()
Dim Cell As Range
Dim Msg As String
For Each Cell In Range("A1:A100")
If Cell = "" Then Msg = Msg & Cell.Address & vbCrLf
Next Cell
MsgBox "Les Celulles Suivante sont Vides : " & vbCrLf & Msg
End Sub


Et là on retourne la quantité de cellules vides entre la dernière cellule contenant des données dans la plage et le départ de celle-ci..... :

Sub SpecialBlank()
Dim ValVide As Integer
On Error GoTo Fin
ValVide = Range("A10:A100").SpecialCells(xlCellTypeBlanks).Count
MsgBox "Il y a " & ValVide & " cellules vides"
Exit Sub
Fin:
MsgBox "Il n'y a aucune donnée dans la plage"
End Sub

Et pour sélectionner la première cellule vide dans la plage avec un message :

Sub FirstBlank()
Dim Cell As Range
Dim Msg As String

For Each Cell In Range("A10:A100")
If Cell = "" Then
MsgBox "Première Cellule Vide " & Cell.Address
Cell.Activate
Exit For
End If
Next Cell
End Sub

Je crois que c'est cette dernière macro que tu cherches...
On pourait faire écrire l'adresse de la cellule en "B1" par exemple au lieu de faire un message comme ceci :

Sub FirstBlank()
Dim Cell As Range
Dim Msg As String

For Each Cell In Range("A10:A100")
If Cell = "" Then
Range("B1") = Cell.Address
Cell.Activate
Exit For
End If
Next Cell
End Sub

Et pour avoir exactement la même chose que dans ta macro de base ce serait ceci :
Sub FirstBlank()
Dim Cell As Range
Dim Msg As String
For Each Cell In Range("A10:A100")
If Cell = "" Then
Range("B1") = Cell.Row
Cell.Activate
Exit For
End If
Next Cell
End Sub

Donc tu as de quoi faire en ce bon long Week End CactusX

@+Thierry
 
Bonsoir Thierry, le Forum,

Que de choix dans cette réponse. Merci.

Celle que j'attendais était bien la dernière. Ce qui donne maintenant :

Function MEdercel(Plage, Retour As String)
'Call MEdercel("A10:A100","B1")
'Plage de recherche, cellule pour le retour

Dim Cell As Range
Dim Msg As String

For Each Cell In Range(Plage)
If Cell = "" Then
Range(Retour) = Cell.Row
Cell.Activate
Exit For
End If
Next Cell
End Function


Fonctionnement Ok dans mon application mais lorsque je saisis cette formule dans la barre des formules, elle est reconnue mais ne donne rien en B1.

Que ce soit avec : =medercel("A19:A100";"B1")
ou avec : =medercel(A19:A100;B1) => dans cette version les cellules de la col. A s'affichent.

Que manque t-il ?

Encore Merci.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
407
Réponses
9
Affichages
256
Réponses
3
Affichages
265
Retour