Voil=E0 un code que j'ai r=E9cup=E9r=E9 de l'internet, que je voulais modif=
ier
pour afficher dans une MsgBox, =E9l=E9ment par =E9l=E9ment pour voir ce qu'=
il
contient comme valeur, mais une erreur est signal=E9e :
Incompatibilit=E9 de type.
Les donn=E9es :
A2: 10
A3:11
A4:aa10
A5 10bb
A6:12
Le code :
'------------------------------------------
Sub suppr_FiltreElabore()
Dim rF As Range
With ActiveSheet
.Range("C2").FormulaR1C1 =3D
"=3DOR(COUNTIF(RC[-2],""10""),COUNTIF(RC[-2],""*10*""))"
.Range("A1:A" & [A65536].End(xlUp).Row).AdvancedFilter
Action:=3DxlFilterInPlace, CriteriaRange:=3DRange("C1:C2"), Unique:=3DFalse
Set rF =3D .Range("_FilterDataBase")
rF.Select
MsgBox "rF.rows.count-1 =3D " & rF.Rows.Count - 1
'rF.Offset(1, 0).Resize(rF.Rows.Count -
1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
i =3D 1
For Each c In rF
'MsgBox "element " + i + " =3D " + c.Value
i =3D i + 1
Next c
.ShowAllData
'.Range("C2").Clear
End With
End Sub
'-------------------------------
'-------------------------------------- Sub suppr_FiltreElabore() Dim Rg As Range, Sh As Worksheet Dim DerLig As Long, I As Long
Set Sh = ActiveSheet
With Sh .Range("C2").FormulaR1C1 = _ "=OR(COUNTIF(RC[-2],""10""),COUNTIF(RC[-2],""*10*""))" DerLig = .Range("A65536").End(xlUp).Row With .Range("A1:A" & DerLig) .AdvancedFilter Action:=xlFilterInPlace, _ CriteriaRange:=Sh.Range("C1:C2"), Unique:úlse End With Set Rg = .Range("_FilterDataBase") Rg.Select MsgBox "Rg.rows.count-1 = " & Rg.Rows.Count - 1
Rg.Offset(1, 0).Resize(Rg.Rows.Count - 1). _ SpecialCells(xlCellTypeVisible).EntireRow.Delete .Range("C2").Clear .ShowAllData I = 1 For Each C In Rg MsgBox "element " & I & " = " & C.Value I = I + 1 Next C End With End Sub '--------------------------------------
"Apitos" a écrit dans le message de news:
Bonjour à tous,
Voilà un code que j'ai récupéré de l'internet, que je voulais modifier pour afficher dans une MsgBox, élément par élément pour voir ce qu'il contient comme valeur, mais une erreur est signalée :
Incompatibilité de type.
Les données :
A2: 10 A3:11 A4:aa10 A5 10bb A6:12
Le code :
'------------------------------------------ Sub suppr_FiltreElabore() Dim rF As Range With ActiveSheet .Range("C2").FormulaR1C1 "=OR(COUNTIF(RC[-2],""10""),COUNTIF(RC[-2],""*10*""))" .Range("A1:A" & [A65536].End(xlUp).Row).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("C1:C2"), Unique:úlse Set rF = .Range("_FilterDataBase") rF.Select MsgBox "rF.rows.count-1 = " & rF.Rows.Count - 1 'rF.Offset(1, 0).Resize(rF.Rows.Count - 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete i = 1 For Each c In rF 'MsgBox "element " + i + " = " + c.Value i = i + 1 Next c .ShowAllData '.Range("C2").Clear End With End Sub '-------------------------------
Merci d'avance
Essaie ceci :
'--------------------------------------
Sub suppr_FiltreElabore()
Dim Rg As Range, Sh As Worksheet
Dim DerLig As Long, I As Long
Set Sh = ActiveSheet
With Sh
.Range("C2").FormulaR1C1 = _
"=OR(COUNTIF(RC[-2],""10""),COUNTIF(RC[-2],""*10*""))"
DerLig = .Range("A65536").End(xlUp).Row
With .Range("A1:A" & DerLig)
.AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Sh.Range("C1:C2"), Unique:úlse
End With
Set Rg = .Range("_FilterDataBase")
Rg.Select
MsgBox "Rg.rows.count-1 = " & Rg.Rows.Count - 1
Rg.Offset(1, 0).Resize(Rg.Rows.Count - 1). _
SpecialCells(xlCellTypeVisible).EntireRow.Delete
.Range("C2").Clear
.ShowAllData
I = 1
For Each C In Rg
MsgBox "element " & I & " = " & C.Value
I = I + 1
Next C
End With
End Sub
'--------------------------------------
"Apitos" <apitos@gmail.com> a écrit dans le message de news:
018f897d-9577-4f44-a5ee-15d9e750cdfe@d1g2000hsg.googlegroups.com...
Bonjour à tous,
Voilà un code que j'ai récupéré de l'internet, que je voulais modifier
pour afficher dans une MsgBox, élément par élément pour voir ce qu'il
contient comme valeur, mais une erreur est signalée :
Incompatibilité de type.
Les données :
A2: 10
A3:11
A4:aa10
A5 10bb
A6:12
Le code :
'------------------------------------------
Sub suppr_FiltreElabore()
Dim rF As Range
With ActiveSheet
.Range("C2").FormulaR1C1 "=OR(COUNTIF(RC[-2],""10""),COUNTIF(RC[-2],""*10*""))"
.Range("A1:A" & [A65536].End(xlUp).Row).AdvancedFilter
Action:=xlFilterInPlace, CriteriaRange:=Range("C1:C2"), Unique:úlse
Set rF = .Range("_FilterDataBase")
rF.Select
MsgBox "rF.rows.count-1 = " & rF.Rows.Count - 1
'rF.Offset(1, 0).Resize(rF.Rows.Count -
1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
i = 1
For Each c In rF
'MsgBox "element " + i + " = " + c.Value
i = i + 1
Next c
.ShowAllData
'.Range("C2").Clear
End With
End Sub
'-------------------------------
'-------------------------------------- Sub suppr_FiltreElabore() Dim Rg As Range, Sh As Worksheet Dim DerLig As Long, I As Long
Set Sh = ActiveSheet
With Sh .Range("C2").FormulaR1C1 = _ "=OR(COUNTIF(RC[-2],""10""),COUNTIF(RC[-2],""*10*""))" DerLig = .Range("A65536").End(xlUp).Row With .Range("A1:A" & DerLig) .AdvancedFilter Action:=xlFilterInPlace, _ CriteriaRange:=Sh.Range("C1:C2"), Unique:úlse End With Set Rg = .Range("_FilterDataBase") Rg.Select MsgBox "Rg.rows.count-1 = " & Rg.Rows.Count - 1
Rg.Offset(1, 0).Resize(Rg.Rows.Count - 1). _ SpecialCells(xlCellTypeVisible).EntireRow.Delete .Range("C2").Clear .ShowAllData I = 1 For Each C In Rg MsgBox "element " & I & " = " & C.Value I = I + 1 Next C End With End Sub '--------------------------------------
"Apitos" a écrit dans le message de news:
Bonjour à tous,
Voilà un code que j'ai récupéré de l'internet, que je voulais modifier pour afficher dans une MsgBox, élément par élément pour voir ce qu'il contient comme valeur, mais une erreur est signalée :
Incompatibilité de type.
Les données :
A2: 10 A3:11 A4:aa10 A5 10bb A6:12
Le code :
'------------------------------------------ Sub suppr_FiltreElabore() Dim rF As Range With ActiveSheet .Range("C2").FormulaR1C1 "=OR(COUNTIF(RC[-2],""10""),COUNTIF(RC[-2],""*10*""))" .Range("A1:A" & [A65536].End(xlUp).Row).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("C1:C2"), Unique:úlse Set rF = .Range("_FilterDataBase") rF.Select MsgBox "rF.rows.count-1 = " & rF.Rows.Count - 1 'rF.Offset(1, 0).Resize(rF.Rows.Count - 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete i = 1 For Each c In rF 'MsgBox "element " + i + " = " + c.Value i = i + 1 Next c .ShowAllData '.Range("C2").Clear End With End Sub '-------------------------------
Merci d'avance
michdenis
J'ai oublié de mentionner que cette ligne de code que j'ai quand même laissé dans la procédure puisque tu l'avais inséré dans ton exemple ne sert absolument à rien
Rg.Select
Il serait préférable de l'enlever !
"Apitos" a écrit dans le message de news:
Bonjour à tous,
Voilà un code que j'ai récupéré de l'internet, que je voulais modifier pour afficher dans une MsgBox, élément par élément pour voir ce qu'il contient comme valeur, mais une erreur est signalée :
Incompatibilité de type.
Les données :
A2: 10 A3:11 A4:aa10 A5 10bb A6:12
Le code :
'------------------------------------------ Sub suppr_FiltreElabore() Dim rF As Range With ActiveSheet .Range("C2").FormulaR1C1 "=OR(COUNTIF(RC[-2],""10""),COUNTIF(RC[-2],""*10*""))" .Range("A1:A" & [A65536].End(xlUp).Row).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("C1:C2"), Unique:úlse Set rF = .Range("_FilterDataBase") rF.Select MsgBox "rF.rows.count-1 = " & rF.Rows.Count - 1 'rF.Offset(1, 0).Resize(rF.Rows.Count - 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete i = 1 For Each c In rF 'MsgBox "element " + i + " = " + c.Value i = i + 1 Next c .ShowAllData '.Range("C2").Clear End With End Sub '-------------------------------
Merci d'avance
J'ai oublié de mentionner que cette ligne de code
que j'ai quand même laissé dans la procédure
puisque tu l'avais inséré dans ton exemple ne sert
absolument à rien
Rg.Select
Il serait préférable de l'enlever !
"Apitos" <apitos@gmail.com> a écrit dans le message de news:
018f897d-9577-4f44-a5ee-15d9e750cdfe@d1g2000hsg.googlegroups.com...
Bonjour à tous,
Voilà un code que j'ai récupéré de l'internet, que je voulais modifier
pour afficher dans une MsgBox, élément par élément pour voir ce qu'il
contient comme valeur, mais une erreur est signalée :
Incompatibilité de type.
Les données :
A2: 10
A3:11
A4:aa10
A5 10bb
A6:12
Le code :
'------------------------------------------
Sub suppr_FiltreElabore()
Dim rF As Range
With ActiveSheet
.Range("C2").FormulaR1C1 "=OR(COUNTIF(RC[-2],""10""),COUNTIF(RC[-2],""*10*""))"
.Range("A1:A" & [A65536].End(xlUp).Row).AdvancedFilter
Action:=xlFilterInPlace, CriteriaRange:=Range("C1:C2"), Unique:úlse
Set rF = .Range("_FilterDataBase")
rF.Select
MsgBox "rF.rows.count-1 = " & rF.Rows.Count - 1
'rF.Offset(1, 0).Resize(rF.Rows.Count -
1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
i = 1
For Each c In rF
'MsgBox "element " + i + " = " + c.Value
i = i + 1
Next c
.ShowAllData
'.Range("C2").Clear
End With
End Sub
'-------------------------------
J'ai oublié de mentionner que cette ligne de code que j'ai quand même laissé dans la procédure puisque tu l'avais inséré dans ton exemple ne sert absolument à rien
Rg.Select
Il serait préférable de l'enlever !
"Apitos" a écrit dans le message de news:
Bonjour à tous,
Voilà un code que j'ai récupéré de l'internet, que je voulais modifier pour afficher dans une MsgBox, élément par élément pour voir ce qu'il contient comme valeur, mais une erreur est signalée :
Incompatibilité de type.
Les données :
A2: 10 A3:11 A4:aa10 A5 10bb A6:12
Le code :
'------------------------------------------ Sub suppr_FiltreElabore() Dim rF As Range With ActiveSheet .Range("C2").FormulaR1C1 "=OR(COUNTIF(RC[-2],""10""),COUNTIF(RC[-2],""*10*""))" .Range("A1:A" & [A65536].End(xlUp).Row).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("C1:C2"), Unique:úlse Set rF = .Range("_FilterDataBase") rF.Select MsgBox "rF.rows.count-1 = " & rF.Rows.Count - 1 'rF.Offset(1, 0).Resize(rF.Rows.Count - 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete i = 1 For Each c In rF 'MsgBox "element " + i + " = " + c.Value i = i + 1 Next c .ShowAllData '.Range("C2").Clear End With End Sub '-------------------------------
Merci d'avance
michdenis
Ce que devrait être le produit final.
Lorsque l'on utilise la proprité "SpecialCells", on se doit d'ajouter la commande "on error resume next" au cas où il n'y a pas de cellules correspondantes... dans ton cas cela signifierait qu'il n'y a pas d'enregistrements répondant à ton critère.
'--------------------------------------------------- Sub suppr_FiltreElabore() Dim Rg As Range, Sh As Worksheet Dim DerLig As Long, I As Long Set Sh = ActiveSheet
With Sh .Range("C2").FormulaR1C1 = _ "=OR(COUNTIF(RC[-2],""10""),COUNTIF(RC[-2],""*10*""))" DerLig = .Range("A65536").End(xlUp).Row With .Range("A1:A" & DerLig) .AdvancedFilter Action:=xlFilterInPlace, _ CriteriaRange:=Sh.Range("C1:C2"), Unique:úlse End With Set Rg = .Range("_FilterDataBase") On Error Resume Next Rg.Offset(1, 0).Resize(Rg.Rows.Count - 1). _ SpecialCells(xlCellTypeVisible).EntireRow.Delete .Range("C2").Clear .ShowAllData End With I = 1 For Each C In Rg MsgBox "element " & I & " = " & C.Value I = I + 1 Next C End Sub '---------------------------------------------------
Ce que devrait être le produit final.
Lorsque l'on utilise la proprité "SpecialCells", on se doit
d'ajouter la commande "on error resume next" au cas où
il n'y a pas de cellules correspondantes... dans ton cas
cela signifierait qu'il n'y a pas d'enregistrements répondant
à ton critère.
'---------------------------------------------------
Sub suppr_FiltreElabore()
Dim Rg As Range, Sh As Worksheet
Dim DerLig As Long, I As Long
Set Sh = ActiveSheet
With Sh
.Range("C2").FormulaR1C1 = _
"=OR(COUNTIF(RC[-2],""10""),COUNTIF(RC[-2],""*10*""))"
DerLig = .Range("A65536").End(xlUp).Row
With .Range("A1:A" & DerLig)
.AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Sh.Range("C1:C2"), Unique:úlse
End With
Set Rg = .Range("_FilterDataBase")
On Error Resume Next
Rg.Offset(1, 0).Resize(Rg.Rows.Count - 1). _
SpecialCells(xlCellTypeVisible).EntireRow.Delete
.Range("C2").Clear
.ShowAllData
End With
I = 1
For Each C In Rg
MsgBox "element " & I & " = " & C.Value
I = I + 1
Next C
End Sub
'---------------------------------------------------
Lorsque l'on utilise la proprité "SpecialCells", on se doit d'ajouter la commande "on error resume next" au cas où il n'y a pas de cellules correspondantes... dans ton cas cela signifierait qu'il n'y a pas d'enregistrements répondant à ton critère.
'--------------------------------------------------- Sub suppr_FiltreElabore() Dim Rg As Range, Sh As Worksheet Dim DerLig As Long, I As Long Set Sh = ActiveSheet
With Sh .Range("C2").FormulaR1C1 = _ "=OR(COUNTIF(RC[-2],""10""),COUNTIF(RC[-2],""*10*""))" DerLig = .Range("A65536").End(xlUp).Row With .Range("A1:A" & DerLig) .AdvancedFilter Action:=xlFilterInPlace, _ CriteriaRange:=Sh.Range("C1:C2"), Unique:úlse End With Set Rg = .Range("_FilterDataBase") On Error Resume Next Rg.Offset(1, 0).Resize(Rg.Rows.Count - 1). _ SpecialCells(xlCellTypeVisible).EntireRow.Delete .Range("C2").Clear .ShowAllData End With I = 1 For Each C In Rg MsgBox "element " & I & " = " & C.Value I = I + 1 Next C End Sub '---------------------------------------------------
cette section : Rg.Offset(1, 0) permet de décaler la plage d'une ligne pour ne pas tenir compte de la ligne d'étiquettes obligatoire pour un filtre élaboré.
cette section : Resize(Rg.Rows.Count - 1) Permet de soustraire une ligne à l'étendue de la plage ... que représente la ligne d'étiquettes dont on a retranchée en décalant la plage d'une ligne.
SpecialCells(xlCellTypeVisible) -> ne retient dans la sélection que les lignes visibles de la plage
cette section : Rg.Offset(1, 0) permet de décaler la plage
d'une ligne pour ne pas tenir compte de la ligne d'étiquettes
obligatoire pour un filtre élaboré.
cette section : Resize(Rg.Rows.Count - 1) Permet de soustraire
une ligne à l'étendue de la plage ... que représente la ligne
d'étiquettes dont on a retranchée en décalant la plage d'une ligne.
SpecialCells(xlCellTypeVisible) -> ne retient dans la sélection que
les lignes visibles de la plage
cette section : Rg.Offset(1, 0) permet de décaler la plage d'une ligne pour ne pas tenir compte de la ligne d'étiquettes obligatoire pour un filtre élaboré.
cette section : Resize(Rg.Rows.Count - 1) Permet de soustraire une ligne à l'étendue de la plage ... que représente la ligne d'étiquettes dont on a retranchée en décalant la plage d'une ligne.
SpecialCells(xlCellTypeVisible) -> ne retient dans la sélection que les lignes visibles de la plage
Apitos
Bonsoir mechdenis,
Merci de tes explications.
Si je souhaiterais afficher seulement les éléments du résultat du filtre et non pas toutes les cellules de la plage soumise au filtre ?
Comment devra être le code ?
Merci.
Bonsoir mechdenis,
Merci de tes explications.
Si je souhaiterais afficher seulement les éléments du résultat du
filtre et non pas toutes les cellules de la plage soumise au filtre ?
Le symbole de concaténation est le & Il est aussi possible d'utiliser le + qui lui est une relique du langage "basic" mais il faut faire attention au signe + qui signifie aussi "Additionner"
Dans cette ligne de code MsgBox "élément " + i + " = " + c.Value
la section "+ c.Value" est équivalent de vouloir additionner la valeur de la variable C à la première section "élément " + i + " = " qui elle représente une chaîne de caractère. Le résultat est un message d'erreur 13 signifiant : "Incompatibilité de type.
Si tu tiens vraiment à utiliser le "+" au lieu du &, il faudrait que tu écrives : MsgBox "élément " + i + " = " + Str(c.value)
La fonction Str() transformant c.value en une chaîne de caractères.
Le symbole de concaténation est le &
Il est aussi possible d'utiliser le + qui lui
est une relique du langage "basic" mais il
faut faire attention au signe + qui signifie aussi
"Additionner"
Dans cette ligne de code
MsgBox "élément " + i + " = " + c.Value
la section "+ c.Value" est équivalent de vouloir
additionner la valeur de la variable C à la première
section "élément " + i + " = " qui elle représente
une chaîne de caractère. Le résultat est un message
d'erreur 13 signifiant : "Incompatibilité de type.
Si tu tiens vraiment à utiliser le "+" au lieu du &, il faudrait
que tu écrives :
MsgBox "élément " + i + " = " + Str(c.value)
La fonction Str() transformant c.value en une chaîne de caractères.
"Apitos" <apitos@gmail.com> a écrit dans le message de news:
bcb7fde3-5784-4e73-a29e-11b961959348@34g2000hsh.googlegroups.com...
Salut,
Le symbole de concaténation est le & Il est aussi possible d'utiliser le + qui lui est une relique du langage "basic" mais il faut faire attention au signe + qui signifie aussi "Additionner"
Dans cette ligne de code MsgBox "élément " + i + " = " + c.Value
la section "+ c.Value" est équivalent de vouloir additionner la valeur de la variable C à la première section "élément " + i + " = " qui elle représente une chaîne de caractère. Le résultat est un message d'erreur 13 signifiant : "Incompatibilité de type.
Si tu tiens vraiment à utiliser le "+" au lieu du &, il faudrait que tu écrives : MsgBox "élément " + i + " = " + Str(c.value)
La fonction Str() transformant c.value en une chaîne de caractères.
| afficher seulement les éléments du résultat du filtre
Ce n'est pas seulement les cellules restant après que tu aies supprimé les lignes indésirables !!!
Je ne saisis pas ce que tu veux afficher ....
Apitos
Bonsoir michdenis,
Ce n'est pas seulement les cellules restant après que tu aies supprimé les lignes indésirables !!!
Je ne saisis pas ce que tu veux afficher ....
A2: 10 A3:11 A4:aa10 A5 10bb A6:12
Avec ce code :
'--------------------------------------------------- Sub FiltreElabore() Dim Rg As Range, Sh As Worksheet Dim DerLig As Long, I As Long Set Sh = ActiveSheet
With Sh .Range("C2").FormulaR1C1 = _ "=OR(COUNTIF(RC[-2],""10""),COUNTIF(RC[-2],""*10*""))" DerLig = .Range("A65536").End(xlUp).Row With .Range("A1:A" & DerLig) .AdvancedFilter Action:=xlFilterInPlace, _ CriteriaRange:=Sh.Range("C1:C2"), Unique:úlse End With Set Rg = .Range("_FilterDataBase") On Error Resume Next Rg.Offset(1, 0).Resize(Rg.Rows.Count - 1). _ SpecialCells(xlCellTypeVisible) .Range("C2").Clear .ShowAllData End With I = 1 For Each C In Rg MsgBox "élément " & I & " = " & C.Value I = I + 1 Next C End Sub '---------------------------------------------------
Ce code m'affiche les cellules de A1 à A6 or je ne voudrais afficher que celles répondants au critère en C1:C2 qui sont A2, A4, A5.
Ce n'est pas seulement les cellules restant après que
tu aies supprimé les lignes indésirables !!!
Je ne saisis pas ce que tu veux afficher ....
A2: 10
A3:11
A4:aa10
A5 10bb
A6:12
Avec ce code :
'---------------------------------------------------
Sub FiltreElabore()
Dim Rg As Range, Sh As Worksheet
Dim DerLig As Long, I As Long
Set Sh = ActiveSheet
With Sh
.Range("C2").FormulaR1C1 = _
"=OR(COUNTIF(RC[-2],""10""),COUNTIF(RC[-2],""*10*""))"
DerLig = .Range("A65536").End(xlUp).Row
With .Range("A1:A" & DerLig)
.AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Sh.Range("C1:C2"), Unique:=False
End With
Set Rg = .Range("_FilterDataBase")
On Error Resume Next
Rg.Offset(1, 0).Resize(Rg.Rows.Count - 1). _
SpecialCells(xlCellTypeVisible)
.Range("C2").Clear
.ShowAllData
End With
I = 1
For Each C In Rg
MsgBox "élément " & I & " = " & C.Value
I = I + 1
Next C
End Sub
'---------------------------------------------------
Ce code m'affiche les cellules de A1 à A6 or je ne voudrais afficher
que celles répondants au critère en C1:C2 qui sont A2, A4, A5.
Ce n'est pas seulement les cellules restant après que tu aies supprimé les lignes indésirables !!!
Je ne saisis pas ce que tu veux afficher ....
A2: 10 A3:11 A4:aa10 A5 10bb A6:12
Avec ce code :
'--------------------------------------------------- Sub FiltreElabore() Dim Rg As Range, Sh As Worksheet Dim DerLig As Long, I As Long Set Sh = ActiveSheet
With Sh .Range("C2").FormulaR1C1 = _ "=OR(COUNTIF(RC[-2],""10""),COUNTIF(RC[-2],""*10*""))" DerLig = .Range("A65536").End(xlUp).Row With .Range("A1:A" & DerLig) .AdvancedFilter Action:=xlFilterInPlace, _ CriteriaRange:=Sh.Range("C1:C2"), Unique:úlse End With Set Rg = .Range("_FilterDataBase") On Error Resume Next Rg.Offset(1, 0).Resize(Rg.Rows.Count - 1). _ SpecialCells(xlCellTypeVisible) .Range("C2").Clear .ShowAllData End With I = 1 For Each C In Rg MsgBox "élément " & I & " = " & C.Value I = I + 1 Next C End Sub '---------------------------------------------------
Ce code m'affiche les cellules de A1 à A6 or je ne voudrais afficher que celles répondants au critère en C1:C2 qui sont A2, A4, A5.