Bonjour,
Je cherche en vba comment trouver la premi=C3=A8re cellule vide dans une pl=
age de plusieurs colonnes et plusieurs lignes. Par d=C3=A9faut le d=C3=A9pl=
acement d'excel est vers la droite je voudrais qu'il cherche vers le bas
Une dernière mise à jour! https://www.cjoint.com/c/ICxainGeScj MichD
martine.leport
Le vendredi 22 mars 2019 15:57:40 UTC+1, MichD a écrit :
Une petite modification mineure. Donne un résultat plus homogèn e! La procédure retourne toutes les plages de cellules qui ont au moins 3 cellules consécutives vides et ce, colonne par colonne. '---------------------------------------- Sub Test() Dim Rg As Range, Plg As Range, Are As Range, B As Long Dim A As Long, Nb As Long, R As Range, N As Long Dim P As Range, S As Long, Message As String 'adapte le nom de l'onglet de la feuille With Worksheets("Feuil1") 'La plage initiale. Set Rg = .Range("A1:C8") End With For A = 1 To Rg.Columns.Count Set Plg = Rg.Columns(A).SpecialCells(xlCellTypeBlanks) Nb = Plg.Areas.Count If Nb > 0 Then Set Are = Plg.Areas(1) End If If Not R Is Nothing And Are.Cells(1, 1).Row = 1 Then Set P = Union(R, Are) Set R = Nothing Message = Message & P.Address & vbCrLf N = 1 End If If N = 0 Then N = 1 Else N = N + 1 End If For B = N To Nb Set Are = Plg.Areas(B) If Are.Cells.Count >= 3 Then Message = Message & Are.Address & vbCrLf Set R = Are End If Next B = 0: N = 0 Next If Message <> "" Then MsgBox "Voici les plages qui ont au moins " & vbCrLf & _ "3 Cellules consécutives vides." & vbCrLf & vbCrLf & Message Else MsgBox "Aucune plage n'a 3 cellules consécutives vides." End If End Sub '---------------------------------------- MichD
Bonjour, Trop fort La curiosité scientifique de Jacquouille va être satisfaite et mo i je vais pouvoir avancer dans mon code. Un grand grand merci pour le code pour les commentaires pour l'exemple et p our votre gentillesse. Caroual
Le vendredi 22 mars 2019 15:57:40 UTC+1, MichD a écrit :
Une petite modification mineure. Donne un résultat plus homogèn e!
La procédure retourne toutes les plages de cellules qui ont au moins 3
cellules consécutives vides et ce, colonne par colonne.
'----------------------------------------
Sub Test()
Dim Rg As Range, Plg As Range, Are As Range, B As Long
Dim A As Long, Nb As Long, R As Range, N As Long
Dim P As Range, S As Long, Message As String
'adapte le nom de l'onglet de la feuille
With Worksheets("Feuil1")
'La plage initiale.
Set Rg = .Range("A1:C8")
End With
For A = 1 To Rg.Columns.Count
Set Plg = Rg.Columns(A).SpecialCells(xlCellTypeBlanks)
Nb = Plg.Areas.Count
If Nb > 0 Then
Set Are = Plg.Areas(1)
End If
If Not R Is Nothing And Are.Cells(1, 1).Row = 1 Then
Set P = Union(R, Are)
Set R = Nothing
Message = Message & P.Address & vbCrLf
N = 1
End If
If N = 0 Then
N = 1
Else
N = N + 1
End If
For B = N To Nb
Set Are = Plg.Areas(B)
If Are.Cells.Count >= 3 Then
Message = Message & Are.Address & vbCrLf
Set R = Are
End If
Next
B = 0: N = 0
Next
If Message <> "" Then
MsgBox "Voici les plages qui ont au moins " & vbCrLf & _
"3 Cellules consécutives vides." & vbCrLf & vbCrLf & Message
Else
MsgBox "Aucune plage n'a 3 cellules consécutives vides."
End If
End Sub
'----------------------------------------
MichD
Bonjour,
Trop fort
La curiosité scientifique de Jacquouille va être satisfaite et mo i je vais pouvoir avancer dans mon code.
Un grand grand merci pour le code pour les commentaires pour l'exemple et p our votre gentillesse.
Caroual
Le vendredi 22 mars 2019 15:57:40 UTC+1, MichD a écrit :
Une petite modification mineure. Donne un résultat plus homogèn e! La procédure retourne toutes les plages de cellules qui ont au moins 3 cellules consécutives vides et ce, colonne par colonne. '---------------------------------------- Sub Test() Dim Rg As Range, Plg As Range, Are As Range, B As Long Dim A As Long, Nb As Long, R As Range, N As Long Dim P As Range, S As Long, Message As String 'adapte le nom de l'onglet de la feuille With Worksheets("Feuil1") 'La plage initiale. Set Rg = .Range("A1:C8") End With For A = 1 To Rg.Columns.Count Set Plg = Rg.Columns(A).SpecialCells(xlCellTypeBlanks) Nb = Plg.Areas.Count If Nb > 0 Then Set Are = Plg.Areas(1) End If If Not R Is Nothing And Are.Cells(1, 1).Row = 1 Then Set P = Union(R, Are) Set R = Nothing Message = Message & P.Address & vbCrLf N = 1 End If If N = 0 Then N = 1 Else N = N + 1 End If For B = N To Nb Set Are = Plg.Areas(B) If Are.Cells.Count >= 3 Then Message = Message & Are.Address & vbCrLf Set R = Are End If Next B = 0: N = 0 Next If Message <> "" Then MsgBox "Voici les plages qui ont au moins " & vbCrLf & _ "3 Cellules consécutives vides." & vbCrLf & vbCrLf & Message Else MsgBox "Aucune plage n'a 3 cellules consécutives vides." End If End Sub '---------------------------------------- MichD
Bonjour, Trop fort La curiosité scientifique de Jacquouille va être satisfaite et mo i je vais pouvoir avancer dans mon code. Un grand grand merci pour le code pour les commentaires pour l'exemple et p our votre gentillesse. Caroual
Jacquouille
Bonjour C'est inouï. Mon futur scientifique se trouve dans votre passé..... Bonne journée à tous. Jacques " Le vin est au repas ce que le parfum est à la femme." . a écrit dans le message de groupe de discussion : Le vendredi 22 mars 2019 15:57:40 UTC+1, MichD a écrit :
Une petite modification mineure. Donne un résultat plus homogène! La procédure retourne toutes les plages de cellules qui ont au moins 3 cellules consécutives vides et ce, colonne par colonne. '---------------------------------------- Sub Test() Dim Rg As Range, Plg As Range, Are As Range, B As Long Dim A As Long, Nb As Long, R As Range, N As Long Dim P As Range, S As Long, Message As String 'adapte le nom de l'onglet de la feuille With Worksheets("Feuil1") 'La plage initiale. Set Rg = .Range("A1:C8") End With For A = 1 To Rg.Columns.Count Set Plg = Rg.Columns(A).SpecialCells(xlCellTypeBlanks) Nb = Plg.Areas.Count If Nb > 0 Then Set Are = Plg.Areas(1) End If If Not R Is Nothing And Are.Cells(1, 1).Row = 1 Then Set P = Union(R, Are) Set R = Nothing Message = Message & P.Address & vbCrLf N = 1 End If If N = 0 Then N = 1 Else N = N + 1 End If For B = N To Nb Set Are = Plg.Areas(B) If Are.Cells.Count >= 3 Then Message = Message & Are.Address & vbCrLf Set R = Are End If Next B = 0: N = 0 Next If Message <> "" Then MsgBox "Voici les plages qui ont au moins " & vbCrLf & _ "3 Cellules consécutives vides." & vbCrLf & vbCrLf & Message Else MsgBox "Aucune plage n'a 3 cellules consécutives vides." End If End Sub '---------------------------------------- MichD
Bonjour, Trop fort La curiosité scientifique de Jacquouille va être satisfaite et moi je vais pouvoir avancer dans mon code. Un grand grand merci pour le code pour les commentaires pour l'exemple et pour votre gentillesse. Caroual
Bonjour
C'est inouï. Mon futur scientifique se trouve dans votre passé.....
Bonne journée à tous.
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
a écrit dans le message de groupe de discussion :
a5851159-7a2a-4f50-86e0-d5f689a06a94@googlegroups.com...
Le vendredi 22 mars 2019 15:57:40 UTC+1, MichD a écrit :
Une petite modification mineure. Donne un résultat plus homogène!
La procédure retourne toutes les plages de cellules qui ont au moins 3
cellules consécutives vides et ce, colonne par colonne.
'----------------------------------------
Sub Test()
Dim Rg As Range, Plg As Range, Are As Range, B As Long
Dim A As Long, Nb As Long, R As Range, N As Long
Dim P As Range, S As Long, Message As String
'adapte le nom de l'onglet de la feuille
With Worksheets("Feuil1")
'La plage initiale.
Set Rg = .Range("A1:C8")
End With
For A = 1 To Rg.Columns.Count
Set Plg = Rg.Columns(A).SpecialCells(xlCellTypeBlanks)
Nb = Plg.Areas.Count
If Nb > 0 Then
Set Are = Plg.Areas(1)
End If
If Not R Is Nothing And Are.Cells(1, 1).Row = 1 Then
Set P = Union(R, Are)
Set R = Nothing
Message = Message & P.Address & vbCrLf
N = 1
End If
If N = 0 Then
N = 1
Else
N = N + 1
End If
For B = N To Nb
Set Are = Plg.Areas(B)
If Are.Cells.Count >= 3 Then
Message = Message & Are.Address & vbCrLf
Set R = Are
End If
Next
B = 0: N = 0
Next
If Message <> "" Then
MsgBox "Voici les plages qui ont au moins " & vbCrLf & _
"3 Cellules consécutives vides." & vbCrLf & vbCrLf & Message
Else
MsgBox "Aucune plage n'a 3 cellules consécutives vides."
End If
End Sub
'----------------------------------------
MichD
Bonjour,
Trop fort
La curiosité scientifique de Jacquouille va être satisfaite et moi je vais
pouvoir avancer dans mon code.
Un grand grand merci pour le code pour les commentaires pour l'exemple et
pour votre gentillesse.
Caroual
Bonjour C'est inouï. Mon futur scientifique se trouve dans votre passé..... Bonne journée à tous. Jacques " Le vin est au repas ce que le parfum est à la femme." . a écrit dans le message de groupe de discussion : Le vendredi 22 mars 2019 15:57:40 UTC+1, MichD a écrit :
Une petite modification mineure. Donne un résultat plus homogène! La procédure retourne toutes les plages de cellules qui ont au moins 3 cellules consécutives vides et ce, colonne par colonne. '---------------------------------------- Sub Test() Dim Rg As Range, Plg As Range, Are As Range, B As Long Dim A As Long, Nb As Long, R As Range, N As Long Dim P As Range, S As Long, Message As String 'adapte le nom de l'onglet de la feuille With Worksheets("Feuil1") 'La plage initiale. Set Rg = .Range("A1:C8") End With For A = 1 To Rg.Columns.Count Set Plg = Rg.Columns(A).SpecialCells(xlCellTypeBlanks) Nb = Plg.Areas.Count If Nb > 0 Then Set Are = Plg.Areas(1) End If If Not R Is Nothing And Are.Cells(1, 1).Row = 1 Then Set P = Union(R, Are) Set R = Nothing Message = Message & P.Address & vbCrLf N = 1 End If If N = 0 Then N = 1 Else N = N + 1 End If For B = N To Nb Set Are = Plg.Areas(B) If Are.Cells.Count >= 3 Then Message = Message & Are.Address & vbCrLf Set R = Are End If Next B = 0: N = 0 Next If Message <> "" Then MsgBox "Voici les plages qui ont au moins " & vbCrLf & _ "3 Cellules consécutives vides." & vbCrLf & vbCrLf & Message Else MsgBox "Aucune plage n'a 3 cellules consécutives vides." End If End Sub '---------------------------------------- MichD
Bonjour, Trop fort La curiosité scientifique de Jacquouille va être satisfaite et moi je vais pouvoir avancer dans mon code. Un grand grand merci pour le code pour les commentaires pour l'exemple et pour votre gentillesse. Caroual
Jacquouille
Bonjour Denis Comme dit à Caroual, mon futur scientifique se trouve déjà dans votre passé. J'ignorais, ou avais oublié, qu'Excel pouvait balayer une boucle dans n'importe quel sens. Je vais essayer de retenir cela. Bonne journée et bon WE. Encore merci. Jacques " Le vin est au repas ce que le parfum est à la femme." . "MichD" a écrit dans le message de groupe de discussion : q73tev$1op2$ Une dernière mise à jour! https://www.cjoint.com/c/ICxainGeScj MichD
Bonjour Denis
Comme dit à Caroual, mon futur scientifique se trouve déjà dans votre passé.
J'ignorais, ou avais oublié, qu'Excel pouvait balayer une boucle dans
n'importe quel sens.
Je vais essayer de retenir cela.
Bonne journée et bon WE. Encore merci.
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
q73tev$1op2$1@gioia.aioe.org...
Bonjour Denis Comme dit à Caroual, mon futur scientifique se trouve déjà dans votre passé. J'ignorais, ou avais oublié, qu'Excel pouvait balayer une boucle dans n'importe quel sens. Je vais essayer de retenir cela. Bonne journée et bon WE. Encore merci. Jacques " Le vin est au repas ce que le parfum est à la femme." . "MichD" a écrit dans le message de groupe de discussion : q73tev$1op2$ Une dernière mise à jour! https://www.cjoint.com/c/ICxainGeScj MichD
MichD
La curiosité scientifique de Jacquouille va être satisfaite et moi je vais pouvoir avancer dans mon code. Un grand grand merci pour le code pour les commentaires pour l'exemple et pour votre gentillesse. Caroual
Retiens le code du fichier exemple, c'est le plus complet! MichD
La curiosité scientifique de Jacquouille va être satisfaite et moi je vais pouvoir avancer dans mon code.
Un grand grand merci pour le code pour les commentaires pour l'exemple et pour votre gentillesse.
Caroual
Retiens le code du fichier exemple, c'est le plus complet!
La curiosité scientifique de Jacquouille va être satisfaite et moi je vais pouvoir avancer dans mon code. Un grand grand merci pour le code pour les commentaires pour l'exemple et pour votre gentillesse. Caroual
Retiens le code du fichier exemple, c'est le plus complet! MichD