Selection plusieurs cellules en langage VBA
Résolu
lolau88
Messages postés
21
Statut
Membre
-
lolau88 Messages postés 21 Statut Membre -
lolau88 Messages postés 21 Statut Membre -
Bonjour,
je souhaite que toutes les cellules vides de certaines colonnes dans mon tableau Excel se masquent automatiquement. J'ai créé une macro mais ça ne fonctionne que si la première cellule de la colonne contient du texte, et moi je voudrais que les lignes disparaissent quand toutes les cellules sont vides, et pas seulement la première.
Quelqu'un aurait-il une solution à mon problème?
Merci bcp
Voici la macro :
je souhaite que toutes les cellules vides de certaines colonnes dans mon tableau Excel se masquent automatiquement. J'ai créé une macro mais ça ne fonctionne que si la première cellule de la colonne contient du texte, et moi je voudrais que les lignes disparaissent quand toutes les cellules sont vides, et pas seulement la première.
Quelqu'un aurait-il une solution à mon problème?
Merci bcp
Voici la macro :
For Each cel In Range("A3:A226") If cel = "" Then cel.EntireRow.Hidden = True End If Next
A voir également:
- Sélectionner plusieurs cellules excel
- Formule excel pour additionner plusieurs cellules - Guide
- Liste déroulante excel - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Verrouiller cellules excel - Guide
- Word et excel gratuit - Guide
7 réponses
Bonjour
Pour masquer les lignes dont toutes les cellules sont vides et ... pour les reafficher
Cdlmnt
Pour masquer les lignes dont toutes les cellules sont vides et ... pour les reafficher
Const lideb = 2 Public Sub masquer() Dim li As Long, cofin As Long, lifin As Long lifin = Cells.Find("*", , , , xlByRows, xlPrevious).Row For li = lideb To lifin cofin = Cells(li, Columns.Count).End(xlToLeft).Column If cofin = 1 And Cells(li, 1) = "" Then Rows(li).EntireRow.Hidden = True Next li End Sub Public Sub demasquer() Dim lifin As Long lifin = Cells.Find("*", , , , xlByRows, xlPrevious).Row Rows(lideb & ":" & lifin).EntireRow.Hidden = False End Sub
Cdlmnt
Bpnjour
salut ccm, ca va ?
C'est au moins 1 cellule vide n'importe tout sur une ligne du Tableau qui masque ou toutes cellules sur une ligne du tabkeau qui masque?
salut ccm, ca va ?
C'est au moins 1 cellule vide n'importe tout sur une ligne du Tableau qui masque ou toutes cellules sur une ligne du tabkeau qui masque?
Salut michel,
je m'étais aussi posé la question
Est ce qu'on doit masquer la ligne
- lorsqu'au moins une cellule est vide (et peut être dans une plage donnée)
- lorque toutes les cellules sont vides
je te laisse continuer, je dois plier boutique !
Bon après midi
je m'étais aussi posé la question
Est ce qu'on doit masquer la ligne
- lorsqu'au moins une cellule est vide (et peut être dans une plage donnée)
- lorque toutes les cellules sont vides
je te laisse continuer, je dois plier boutique !
Bon après midi
je te laisse continuer, je dois plier boutique !
moi aussi...
1 ou plusieurs cellules vides dans tableau entre A et O
moi aussi...
1 ou plusieurs cellules vides dans tableau entre A et O
Option Explicit
'--------------------------------------
Sub nettoyer_tableaux()
'A26 à O57, A64 à O154...)
Call cacherligvide("A26:O57")
Call cacherligvide("A64:O156")
End Sub
'-------------------------------------------------
Sub cacherligvide(plage)
On Error Resume Next
Range(plage).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
re
en attendant la soupe
en attendant la soupe
Option Explicit
Const Col_deb As String = "A"
Const Col_fin As String = "O"
'-----------------------------------------------
Sub nettoyer_tableaux()
'A26 à O57, A64 à O154...)
Application.ScreenUpdating = False
Call cacherligvide(26, 57)
Call cacherligvide(64, 154)
End Sub
'-------------------------------------------------
Sub cacherligvide(deb, fin)
Dim Plage As Range, Nbre As Byte, Lig As Byte, Cptr As Byte
Set Plage = Range(Cells(deb, Col_deb), Cells(fin, Col_deb))
Nbre = Application.CountIf(Plage, "")
Lig = deb - 1
For Cptr = 1 To Nbre
Lig = Columns(Col_deb).Find("", Cells(Lig, Col_deb), xlValues).Row
If Application.CountA(Range(Cells(Lig, Col_deb), Cells(Lig, Col_fin))) = 0 Then
Rows(Lig).Hidden = True
End If
Next
End Sub
Oui, je sais où est le bouton activeX mais en fait ce qui ne fonctionne pas c'est l'ordre du code. Voilà ce que j' ai mis, mais ça m'affiche un message d'erreur lors de l'exécution.
Option Explicit
Private Sub CommandButton1_Click()
Const Col_deb As String = "A"
Const Col_fin As String = "O"
Sub nettoyer_tableaux()
Application.ScreenUpdating = False
Call cacherligvide(4, 13)
Call cacherligvide(19, 31)
Sub cacherligvide(deb, fin)
Dim Plage As Range, Nbre As Byte, Lig As Byte, Cptr As Byte
Set Plage = Range(Cells(deb, Col_deb), Cells(fin, Col_deb))
Nbre = Application.CountIf(Plage, "")
Lig = deb - 1
For Cptr = 1 To Nbre
Lig = Columns(Col_deb).Find("", Cells(Lig, Col_deb), xlValues).Row
If Application.CountA(Range(Cells(Lig, Col_deb), Cells(Lig, Col_fin))) = 0 Then
Rows(Lig).Hidden = True
End If
Next
End Sub
Option Explicit
Private Sub CommandButton1_Click()
Const Col_deb As String = "A"
Const Col_fin As String = "O"
Sub nettoyer_tableaux()
Application.ScreenUpdating = False
Call cacherligvide(4, 13)
Call cacherligvide(19, 31)
Sub cacherligvide(deb, fin)
Dim Plage As Range, Nbre As Byte, Lig As Byte, Cptr As Byte
Set Plage = Range(Cells(deb, Col_deb), Cells(fin, Col_deb))
Nbre = Application.CountIf(Plage, "")
Lig = deb - 1
For Cptr = 1 To Nbre
Lig = Columns(Col_deb).Find("", Cells(Lig, Col_deb), xlValues).Row
If Application.CountA(Range(Cells(Lig, Col_deb), Cells(Lig, Col_fin))) = 0 Then
Rows(Lig).Hidden = True
End If
Next
End Sub
Option Explicit
Const Col_deb As String = "A"
Const Col_fin As String = "O"
'-----------------------------------------------
Private Sub CommandButton1_Click()
'A26 à O57, A64 à O154...)
Application.ScreenUpdating = False
Call cacherligvide(26, 57)
Call cacherligvide(64, 154)
End Sub
'-------------------------------------------------
Sub cacherligvide(deb, fin)
Dim Plage As Range, Nbre As Byte, Lig As Byte, Cptr As Byte
Set Plage = Range(Cells(deb, Col_deb), Cells(fin, Col_deb))
Nbre = Application.CountIf(Plage, "")
Lig = deb - 1
For Cptr = 1 To Nbre
Lig = Columns(Col_deb).Find("", Cells(Lig, Col_deb), xlValues).Row
If Application.CountA(Range(Cells(Lig, Col_deb), Cells(Lig, Col_fin))) = 0 Then
Rows(Lig).Hidden = True
End If
Next
End Sub
Michel
Const Col_deb As String = "A"
Const Col_fin As String = "O"
'-----------------------------------------------
Private Sub CommandButton1_Click()
'A26 à O57, A64 à O154...)
Application.ScreenUpdating = False
Call cacherligvide(26, 57)
Call cacherligvide(64, 154)
End Sub
'-------------------------------------------------
Sub cacherligvide(deb, fin)
Dim Plage As Range, Nbre As Byte, Lig As Byte, Cptr As Byte
Set Plage = Range(Cells(deb, Col_deb), Cells(fin, Col_deb))
Nbre = Application.CountIf(Plage, "")
Lig = deb - 1
For Cptr = 1 To Nbre
Lig = Columns(Col_deb).Find("", Cells(Lig, Col_deb), xlValues).Row
If Application.CountA(Range(Cells(Lig, Col_deb), Cells(Lig, Col_fin))) = 0 Then
Rows(Lig).Hidden = True
End If
Next
End Sub
Michel
Bonjour Michel,
j'ai encore une erreur qui s'affiche lors de l'exécution de la macro : "erreur d'exécution 6"
Serais tu me dire de quoi cela provient? La macro fonctionnait pourtant au départ lorsque je l'ai mise puis quand j'ai rajouté des lignes, ça m'a affiché ce message d'erreur.
Voici le code que j'ai mis :
Option Explicit
Const Col_deb As String = "A"
Const Col_fin As String = "O"
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Call cacherligvide(25, 42)
Call cacherligvide(44, 73)
Call cacherligvide(78, 102)
Call cacherligvide(105, 134)
Call cacherligvide(139, 171)
Call cacherligvide(177, 197)
Call cacherligvide(201, 205)
Call cacherligvide(209, 212)
Call cacherligvide(216, 219)
Call cacherligvide(221, 238)
Call cacherligvide(243, 267)
Call cacherligvide(270, 299)
End Sub
Sub cacherligvide(deb, fin)
Dim Plage As Range, Nbre As Byte, Lig As Byte, Cptr As Byte
Set Plage = Range(Cells(deb, Col_deb), Cells(fin, Col_deb))
Nbre = Application.CountIf(Plage, "")
Lig = deb - 1
For Cptr = 1 To Nbre
Lig = Columns(Col_deb).Find("", Cells(Lig, Col_deb), xlValues).Row
If Application.CountA(Range(Cells(Lig, Col_deb), Cells(Lig, Col_fin))) = 0 Then
Rows(Lig).Hidden = True
End If
Next
End Sub
Merci beaucoup
j'ai encore une erreur qui s'affiche lors de l'exécution de la macro : "erreur d'exécution 6"
Serais tu me dire de quoi cela provient? La macro fonctionnait pourtant au départ lorsque je l'ai mise puis quand j'ai rajouté des lignes, ça m'a affiché ce message d'erreur.
Voici le code que j'ai mis :
Option Explicit
Const Col_deb As String = "A"
Const Col_fin As String = "O"
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Call cacherligvide(25, 42)
Call cacherligvide(44, 73)
Call cacherligvide(78, 102)
Call cacherligvide(105, 134)
Call cacherligvide(139, 171)
Call cacherligvide(177, 197)
Call cacherligvide(201, 205)
Call cacherligvide(209, 212)
Call cacherligvide(216, 219)
Call cacherligvide(221, 238)
Call cacherligvide(243, 267)
Call cacherligvide(270, 299)
End Sub
Sub cacherligvide(deb, fin)
Dim Plage As Range, Nbre As Byte, Lig As Byte, Cptr As Byte
Set Plage = Range(Cells(deb, Col_deb), Cells(fin, Col_deb))
Nbre = Application.CountIf(Plage, "")
Lig = deb - 1
For Cptr = 1 To Nbre
Lig = Columns(Col_deb).Find("", Cells(Lig, Col_deb), xlValues).Row
If Application.CountA(Range(Cells(Lig, Col_deb), Cells(Lig, Col_fin))) = 0 Then
Rows(Lig).Hidden = True
End If
Next
End Sub
Merci beaucoup
Bonjour Michel,
j'ai encore une erreur qui s'affiche lors de l'exécution de la macro : "erreur d'exécution 6"
Serais tu me dire de quoi cela provient? La macro fonctionnait pourtant au départ lorsque je l'ai mise puis quand j'ai rajouté des lignes, ça m'a affiché ce message d'erreur.
Voici le code que j'ai mis :
Option Explicit
Const Col_deb As String = "A"
Const Col_fin As String = "O"
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Call cacherligvide(25, 42)
Call cacherligvide(44, 73)
Call cacherligvide(78, 102)
Call cacherligvide(105, 134)
Call cacherligvide(139, 171)
Call cacherligvide(177, 197)
Call cacherligvide(201, 205)
Call cacherligvide(209, 212)
Call cacherligvide(216, 219)
Call cacherligvide(221, 238)
Call cacherligvide(243, 267)
Call cacherligvide(270, 299)
End Sub
Sub cacherligvide(deb, fin)
Dim Plage As Range, Nbre As Byte, Lig As Byte, Cptr As Byte
Set Plage = Range(Cells(deb, Col_deb), Cells(fin, Col_deb))
Nbre = Application.CountIf(Plage, "")
Lig = deb - 1
For Cptr = 1 To Nbre
Lig = Columns(Col_deb).Find("", Cells(Lig, Col_deb), xlValues).Row
If Application.CountA(Range(Cells(Lig, Col_deb), Cells(Lig, Col_fin))) = 0 Then
Rows(Lig).Hidden = True
End If
Next
End Sub
Merci beaucoup
j'ai encore une erreur qui s'affiche lors de l'exécution de la macro : "erreur d'exécution 6"
Serais tu me dire de quoi cela provient? La macro fonctionnait pourtant au départ lorsque je l'ai mise puis quand j'ai rajouté des lignes, ça m'a affiché ce message d'erreur.
Voici le code que j'ai mis :
Option Explicit
Const Col_deb As String = "A"
Const Col_fin As String = "O"
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Call cacherligvide(25, 42)
Call cacherligvide(44, 73)
Call cacherligvide(78, 102)
Call cacherligvide(105, 134)
Call cacherligvide(139, 171)
Call cacherligvide(177, 197)
Call cacherligvide(201, 205)
Call cacherligvide(209, 212)
Call cacherligvide(216, 219)
Call cacherligvide(221, 238)
Call cacherligvide(243, 267)
Call cacherligvide(270, 299)
End Sub
Sub cacherligvide(deb, fin)
Dim Plage As Range, Nbre As Byte, Lig As Byte, Cptr As Byte
Set Plage = Range(Cells(deb, Col_deb), Cells(fin, Col_deb))
Nbre = Application.CountIf(Plage, "")
Lig = deb - 1
For Cptr = 1 To Nbre
Lig = Columns(Col_deb).Find("", Cells(Lig, Col_deb), xlValues).Row
If Application.CountA(Range(Cells(Lig, Col_deb), Cells(Lig, Col_fin))) = 0 Then
Rows(Lig).Hidden = True
End If
Next
End Sub
Merci beaucoup
mais je débute vraiment en VBA et en copiant et collant ton code dans ma macro ça ne fonctionne pas.
En fait j'ai un bouton sur lequel j'appuie et les lignes concernées (en occurrence pour mon tableau cela concerne des groupes de cellules de A26 à O57, A64 à O154...) disparaissent lorsque les cellules y sont vides.
Merci d'avance pour tes explications.
cdlmnt