XL 2019 Cellule vide

gg13

XLDnaute Occasionnel
Bonjour,

Après recherche sur le site je ne trouve pas la formule exacte pour trouver la première cellule vide.
Ces formules pour VBA (voir fichier joint) ne trouvent pas celle recherchée car après la cellule C 122 il y a encore d’autre valeurs.

Donc la recherche doit être limitée entre C3 C122 et je voudrais trouver le n° de la cellule B correspondante.

Pour l’exemple le résultat devrait être cellule C 45 donc N° 43
Merci de votre aide si vous connaissez la réponse.
(Fichier exemple joint)

GG13
 

Pièces jointes

  • Cell vide.xlsx
    11.6 KB · Affichages: 6
Solution
Re,
Pourquoi mettre un xlsx en PJ avec des boutons de macros plus attaché à rien ?
En PJ ( en xlsm ) un essai avec :
VB:
Sub Test()
'Premiere Ligne vide en C = 3 + Application.CountIf(Range("C3:C123"), "=" & "N*")
[E34] = 3 + Application.CountIf(Range("C3:C123"), "=" & "N*")
'ValB qd Premier Vide en C = Cells(3 + Application.CountIf(Range("C3:C123"), "=" & "N*"), "B")
[E36] = Cells(3 + Application.CountIf(Range("C3:C123"), "=" & "N*"), "B")
'Dernier Nombre en B sur 1er vide en C = Application.CountIf(Range("C3:C123"), "*") - Application.CountIf(Range("C3:C123"), " ")
[E35] = Application.CountIf(Range("C3:C123"), "*") - Application.CountIf(Range("C3:C123"), " ")
End Sub

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour GG,
Vos cellules vides contiennent des espaces.
Donc une possibilité pour obtenir la première cellule "vide" en colonne C :
VB:
PremLigne = 3 + Application.CountIf(Range("C3:C123"), "=" & "N*")
ou la dernière valeur de N° :
Code:
DernierNombre = Cells(3 + Application.CountIf(Range("C3:C123"), "=" & "N*"), "B")
Et si vous n'êtes pas sur qu'en colonne C les chaines commencent par N, alors :
Code:
DernierNombre = Application.CountIf(Range("C3:C123"), "*") - Application.CountIf(Range("C3:C123"), " ")
 
Dernière édition:

gg13

XLDnaute Occasionnel
Sylvanu
Merci
Les 3 propositions fonctionnent sur le fichier joint pas sur mon programme.
J'ai choisi
DernierNombre = Cells(3 + Application.CountIf(Range("C3:C123"), "=" & "N*"), "B")

J'ai 1 qui s'affiche dans la cellule A1 et pas le DernierNombre .(voir fichier joint)

GG13
 

Pièces jointes

  • 1-Cell vide.xlsx
    16.1 KB · Affichages: 1

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Pourquoi mettre un xlsx en PJ avec des boutons de macros plus attaché à rien ?
En PJ ( en xlsm ) un essai avec :
VB:
Sub Test()
'Premiere Ligne vide en C = 3 + Application.CountIf(Range("C3:C123"), "=" & "N*")
[E34] = 3 + Application.CountIf(Range("C3:C123"), "=" & "N*")
'ValB qd Premier Vide en C = Cells(3 + Application.CountIf(Range("C3:C123"), "=" & "N*"), "B")
[E36] = Cells(3 + Application.CountIf(Range("C3:C123"), "=" & "N*"), "B")
'Dernier Nombre en B sur 1er vide en C = Application.CountIf(Range("C3:C123"), "*") - Application.CountIf(Range("C3:C123"), " ")
[E35] = Application.CountIf(Range("C3:C123"), "*") - Application.CountIf(Range("C3:C123"), " ")
End Sub
 

Pièces jointes

  • 1-Cell vide.xlsm
    20.8 KB · Affichages: 3

gg13

XLDnaute Occasionnel
Sylvanu
Désolé pour xlx, je ne l'avais pas remarqué à l'enregistrement.
La solution qui fonctionne est
Application.CountIf(Range("C3:C123"), "*") - Application.CountIf(Range("C3:C123"), " ")

3 + Application.CountIf(Range("C3:C123"), "=" & "N*") => renvoie 3

Cells(3 + Application.CountIf(Range("C3:C123"), "=" & "N*"), "B") => renvoie 1

Je ne comprends pas pourquoi les 3 solutions marchent sur le fichier test et pas dans mon programme.
les colonnes A B C sont exactement les mêmes.
Merci pour cette formule je vais pouvoir continuer.

GG13
 

patricktoulon

XLDnaute Barbatruc
re
bonjour
ce que je retiens de la demande
Donc la recherche doit être limitée entre C3 C122 et je voudrais trouver le n° de la cellule B correspondante.
le message t'affiche le numéro dans la colonne "B" de la premiere ligne vide en "C" a partir de C2
VB:
Sub test()
MsgBox Feuil1.[c2:c122].Find(" ", LookIn:=xlValues).Offset(, -1).Value
End Sub
pas compliqué
en formule ca donnerait ceci
dans une cellule tu met cette formule
INDEX(B2:B122;EQUIV(" ";C2:C122;0))
tout simplement

oserais-je dire quand même que des cellule avec un espace c'est pas top
c'est bizarre quand j'ouvre un new fichier dans excel je n'est pas cet espace
il a donc selon moi été mis volontairement ou involontairement
je corrigerais cela perso
car toute cellule rempli passe par le calculate quand il y a une formule qui re calcule au change
c'est ce genre de sottises qui font ramer les fichiers

pour info si il n'y avais pas d'espaces un simple
VB:
msgbox feuil1.[c2].end(xldown).offset(,-1).value
suffirait
ou bien encore
VB:
Sub test2()
MsgBox Range("B" & Evaluate("MAX(ROW(c2:c122)*( c2:c122 <>""""))") + 1)
End Sub


a+ ;)
 
Dernière édition:

gg13

XLDnaute Occasionnel
Bonjour,
Merci pour toutes ces informations.
J'aimerais bien savoir où vous trouvez toutes ces formules car je suis incapable de les connaitre sans votre aide.
Beaucoup d'information sur internet mais ce n'est pas toujours suffisant.
Encore merci et bonne journée.
GG13
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous :),

Ma p'tite version qui considère une cellule vide comme étant une cellule :
  • qui effectivement est vide
  • qui contient la chaine "vide"
  • qui ne contient que des espaces
  • qui ne contient que des espaces insécables
  • qui contient une combinaison d'espace et d'espace insécable
Code dans module de Feuil1 :
VB:
Sub Test()
Dim Ligne, PremCelVide As Range
   ' ligne renvoie le range de la 1ère cellule vide ou assimilée dans C3:C122
   ' ou bien retourne 0 si aucune cellule n'est présente
   Ligne = Evaluate("=IFERROR(MATCH(TRUE,TRIM(SUBSTITUTE(C3:C122,CHAR(160),""""))="""",0),0)")
   If Ligne = 0 Then    ' pas de cellule vide
      MsgBox "Aucune cellule vide ou assimilée !", vbCritical
   Else                 ' il y a une cellule vide ou assimilée
      Set PremCelVide = Range("c" & Range("C3:C122").Row - 1 + Ligne)
      MsgBox "La première cellule vide ou assimilée est " & PremCelVide.Address(0, 0) & vbLf & _
         "et correspond au N° " & PremCelVide(1, 0), vbInformation
      PremCelVide.Select
   End If
End Sub
 

Pièces jointes

  • gg13- prem cell vide ou assimilée- v1.xlsm
    18.9 KB · Affichages: 2

Discussions similaires

Réponses
30
Affichages
2 K