Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Comment faire pour vérifier si une suite de cellule est vide?

  • Initiateur de la discussion Initiateur de la discussion Paritec
  • 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 !

Paritec

XLDnaute Barbatruc
Bonjour à tous
déjà BONNE ANNEE 2010 a tous
j'ai un petit souci je n'arrive pas a faire ce que je souhaite
je voudrais en gros tester si toutes les cellules de la ligne sont vides?
j'ai fait comme ci-dessous mais c'était trop simple alors si vous avez une idée merci d'avance
a+
papou 🙂
Code:
fin = Feuil1.Range("A65000").End(xlUp).Row
dercol = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
    For i = 1 To fin
If Range(Cells(i, 26), Cells(i, dercol)) = "" Then MsgBox "oui elle est vide"   
    Next
 
Dernière édition:
Re : Comment faire pour vérifier si une suite de cellule est vide?

Bonjour Papou et bonne année 🙂,
Peut-être en utilisant NBVAL
Code:
fin = Feuil1.Range("A65000").End(xlUp).Row
dercol = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
    For i = 1 To fin
If application.counta(Range(Cells(i, 26), Cells(i, dercol))) = 0 Then MsgBox "oui elle est vide"   
    Next
A+
kjin
 
Re : Comment faire pour vérifier si une suite de cellule est vide?

Bonjour kjin, Paritec,
Pas sûr d'avoir tout compris, notamment le rôle du 26, sauf s'il s'agit de voir s'il n'y a que des cellules vides au-delà de la vingt-cinquième colonne, ce qui ne correspond qu'en gros à la demande
(...) je voudrais en gros tester si toutes les cellules de la ligne sont vides? (...)
(De façon générale, dès que je vois des choses
du genre en gros dans une question de programmation,
je commence à douter...)

A tout hasard (qui, on le dit - mais faut-il le croire ? - fait bien les choses) :
Code:
[COLOR="DarkSlateGray"][B]Sub toto()
Dim i As Long, j As Long, tf As Boolean
   With ActiveSheet
      For j = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
         tf = True
         For i = 26 To .Cells(j, .Columns.Count).End(xlToLeft).Column
            If Not IsEmpty(.Cells(j, i)) Then tf = False: Exit For
         Next i
         If tf Then
            MsgBox "La ligne " & j & " de la feuille '" & .Name & "' est vide."
         End If
      Next j
   End With
End Sub[/B][/COLOR]
Merci pour les vœux, et que l'année 2010 vous soit propice !
ROGER2327
#2509
 
Re : Comment faire pour vérifier si une suite de cellule est vide?

Bonsoir Kjin Roger,
pour Kjin le nbval je ne sais pas l'utiliser, par contre pour Roger, oui le 26 je n'ai pas précisé mais c'est pour tester de la cellule colonne Z à la dernière colonne donc de 26 à dercol.
C'est pour permettre de sauter des lignes dans une macro existante pour gagner du temps car pour le moment je teste toutes les cellules et seulement si toutes sont vides seulement je vais plus loin.
Et je pensais que l'on pouvait tester une série de cellule adjacente pour gagner du temps exemple de Z1 à CZ1 = "" ligne suivante.
Voilà à tous les deux merci de vos réponses pour le nbval je ne sais pas mais la macro de Roger je ne pense pas que je vais pouvoir l'utiliser(excuses moi Roger)
le message box est là simplement pour mes test savoir si oui ou non ma macro fait ce que je désire.
a+
Papou 🙂
 
Re : Comment faire pour vérifier si une suite de cellule est vide?

Re bonsoir Kjin,
je sais, je sais tu vas vite !!! Moi je ne vais pas aussi vite que toi mais j'ai fait cela dis moi si cela te plait, mais je passe par une colonne en plus?
dans l'attente de ta réponse
a+
papou 🙂
Code:
If Cells(a, dercol + 1) = "=CountA.Range(Cells(a, 26), Cells(a, dercol))" = 0 Then MsgBox " vide"
 
Re : Comment faire pour vérifier si une suite de cellule est vide?

Re Bonsoir Kjin,
je sors de table et franchement je m'excuse, j'ai cru que tu avais recopié mon bout de code, je n'avais pas vu que tu me donnais la solution !!!!
je viens de voir en relisant car je ne comprenais pas pourquoi dans ton dernier message tu me disais "c'est précisemment l'exemple "
Excuses moi et je vais essayé ta solution de suite
merci beaucoup
a+
Papou 🙂
 
Dernière édition:
Re : Comment faire pour vérifier si une suite de cellule est vide?

Re...
J'ai du mal à comprendre. En adaptant comme suit :
Code:
[COLOR="DarkSlateGray"][B]Sub toto()
Dim i As Long, j As Long, tf As Boolean
   With ActiveSheet
      For j = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
         tf = True
         For i = 26 To .Cells(j, .Columns.Count).End(xlToLeft).Column
            If Not IsEmpty(.Cells(j, i)) Then tf = False: Exit For
         Next i
         If tf Then
[COLOR="SeaGreen"]'Faire ce qu'il y a à faire si toutes les cellules de Zj à IVj sont vides.[/COLOR]
         Else
[COLOR="SeaGreen"]'Faire ce qu'il y a à faire si certaines cellules de Zj à IVj ne sont pas vides.[/COLOR]
         End If
      Next j
   End With
End Sub[/B][/COLOR]
n'a-t-on pas quelque chose qui permet de répondre à vos souhaits ?
Quant aux excuses, il n'en est pas besoin : une proposition qui ne convient pas doit être écartée. On en trouvera une autre.​
ROGER2327
#2511
 
Re : Comment faire pour vérifier si une suite de cellule est vide?

Re,
...je passe par une colonne en plus....
Là c'est moi qui ne suis plus...pourquoi une colonne en plus ?!
Code:
Sub papou()
With Feuil1
fin = .UsedRange.SpecialCells(xlLastCell).Row
dercol = .UsedRange.SpecialCells(xlLastCell).Column
For i = 1 To fin
    If Application.CountA(Range(.Cells(i, 26), .Cells(i, dercol))) = 0 Then
        MsgBox "la plage " & .Range(.Cells(i, 26), .Cells(i, dercol)).Address(0, 0) & " est vide"
    Else
        MsgBox "la ligne " & .Range(.Cells(i, 26), .Cells(i, dercol)).Address(0, 0) & " n'est pas vide"
    End If
Next
End With
End Sub
S'il n'y a pas de valeur dans la plage c'est qu'elle est vide non ?

Edit : Euh j'ai trois trains de retard moi 🙄
A+
kjin
 
Dernière édition:
Re : Comment faire pour vérifier si une suite de cellule est vide?

Re Kjin,
bah oui lorsque tu m'as répondu avec le nbval j'ai cherché mais je n'avais pas fait propre comme toi If application etc donc j'avais mis une colonne de plus !!
Pourquoi faire simple quand on peut faire compliquer.
Non en fait si j'avais lu ta réponse je n'aurais même pas cherché mais appliqué directement.
alors c'est tout bon merci à vous deux Kjin et Roger
bonne soirée
a+
papou 🙂
 
Re : Comment faire pour vérifier si une suite de cellule est vide?

Suite...
Re Bonsoir KJIN le forum,
Exactement ce qu'il me fallait merci et bonne soirée
Papou 🙂
Je n'avais pas vu ce message avant ma précédente réponse. Si la proposition de kjin convient, la mienne est à oublier car elle ne fait pas du tout la même chose !
Dans le classeur joint, la procédure de kjin dénombre 16 lignes vides, la mienne, 26.
J'étais complètement à côté de la plaque !​
ROGER2327
#2512
 

Pièces jointes

Re : Comment faire pour vérifier si une suite de cellule est vide?

Bonsoir Kjin Roger,
oui effectivement ton exemple est trés bon car normalement dans les deux cas on devrait trouver 26 lignes
ceci est du au fait que dans ce cas de figure on a dercol qui est plus petit que 26 si tu mets dercol+1 dans la macro de Kjin tu obtiendras aussi 26 lignes c'est ça qui est le bon résultat si tu considères que de la colonne Z à la colonne normalement dernière bx dans mon fichier il n'y a rien dans ton fichier donc il devrait bien trouver 26 lignes vide.
Merci pour tout
bonne soirée
Papou 🙂

PS: et encore merci pour le split """"
 
Re : Comment faire pour vérifier si une suite de cellule est vide?

Bonjour à tous,

Une autre manière de faire avec Find

Code:
Sub AvecFind_2()
Dim S As Worksheet
Dim Plage As Range
Dim R As Range
Dim LastLig&
Dim FirstRow&
Dim cpt&
Dim T&()
Dim i&
Dim j&
Set S = Sheets("Feuil1")
LastLig& = S.[a65536].End(xlUp).Row
Set Plage = S.Range("z1:iv" & LastLig& & "")
Set R = Plage.Find("*", LookIn:=xlValues, After:=S.Range("iv" & LastLig& & ""))
If Not R Is Nothing Then
  FirstRow& = R.Row
  cpt& = cpt& + 1
  ReDim Preserve T&(1 To cpt&)
  T&(cpt&) = R.Row
  Do
    Set R = Plage.FindNext(Range("iv" & R.Row & ""))
    If R.Row = FirstRow& Then Exit Do
    cpt& = cpt& + 1
    ReDim Preserve T&(1 To cpt&)
    T&(cpt&) = R.Row
  Loop While Not R Is Nothing
End If
If cpt& <> 0 Then
  '--- Traitement pour lignes non vides ---
  For i& = 1 To cpt&
    MsgBox "La ligne " & T(i&) & " contient quelque chose." ''' à la place, votre traitement
  Next i&
  '--- OU traitement pour lignes vides ---
  If cpt& <> LastLig& Then
    j& = 1
    For i& = 1 To LastLig&
      If i& = T(j&) Then
        j& = j& + 1
        If j& > cpt& Then j& = 1
        i& = i& + 1
        If i& > LastLig& Then Exit For
      End If
      MsgBox "Ligne vide " & i& ''' à la place, votre traitement
    Next i&
  End If
End If
End Sub

Cordialement.

PMO
Patrick Morange
 
Dernière édition:
Re : Comment faire pour vérifier si une suite de cellule est vide?

Bonsoir à tous
A PMO2 :
Dans le classeur d'essai du message #12, votre procédure provoque une erreur dans la dernière boucle For... ...Next sur la ligne If i& = T(j&) Then.
(Probablement parce qu'il n'y a pas de données au-delà de la colonne F, mais je n'ai pas analysé le code et je reste prudent.)​

D'autre part, avec un nombre important de données, ma procédure est beaucoup trop lente. Je pense qu'il faut l'oublier définitivement.
Celles de kjin et de PMO2 sont bien plus efficaces.​
ROGER2327
#2514
 
- 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

Discussions similaires

Réponses
3
Affichages
583
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…