OVH Cloud OVH Cloud

Macro et filtre automatique et déplacement ?

3 réponses
Avatar
Richard Martin
Je me rapproche de ma solution finale, mas il y a encore un hic !
J'ai ce code :

Selection.AutoFilter Field:=19, Criteria1:="=" 'Cherche pour les
cellules vide
Selection.AutoFilter Field:=2, Criteria1:="X" 'Cherche pour les
cellules qui contiennent un X
Selection.AutoFilter Field:=14, Criteria1:="01" 'Cherche pour les
cellules qui contiennent 01
Range("S1").Select 'La cellule
S1 est sélectionnée
ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate 'Pour déplacer
d'une cellule vers le bas à la ligne suivante (C'est là mon problème)
ActiveCell.FormulaR1C1 = "X" 'Écrit un X dans la
cellule ou on est positionné (Normalement cellule S?)

'Dans l'exemple ci-dessus ça donne S2 et ça devrait être S242

Je veux faire écrire un X dans la cellule suivante. le problème est que la
commande qui envoie à une cellule plus bas ne respecte pas le filtre. Si
mon filtre me donne comme première ligne en dessous de l'en-tête de colonne
la ligne 242 et que je suis dans l'en-tête cellule S1, la commande pour
descendre d'une ligne co-dessus m'amème en S2 et mon X s'écrit dans cette
cellule. Je veux que la commande m'amène à la première ligne du résultat du
filtre, c'est à dire dans mon exemple ici, la cellule S242. Manuellement ça
fonctionne, ça doit pouvoir fonctionner en macro.

Merci d'avance pour votre aide !

Richard.

3 réponses

Avatar
MichDenis
Bonjour Richard,

Si ta plage est déjà filtré et que tu veuilles inscrire dans la colonne S , un X dans toutes les cellules de cette
colonne qui est visible suite à l'application du filtre :

Je n'ai pas saisi la finalité de ton opération ...

'--------------------------
Dim Rg As Range
With Worksheets("Feuil1")
Set Rg = .Range("_FilterDatabase") _
.Columns(19).SpecialCells(xlCellTypeVisible)
End With
Rg.Value = "X"
'---------------------------

'Sinon tu pourrais faire une boucle :
For each C in Rg
C.value = "X"
next
'--------------------------


Salutations!




"Richard Martin" a écrit dans le message de news:
Je me rapproche de ma solution finale, mas il y a encore un hic !
J'ai ce code :

Selection.AutoFilter Field:, Criteria1:="=" 'Cherche pour les
cellules vide
Selection.AutoFilter Field:=2, Criteria1:="X" 'Cherche pour les
cellules qui contiennent un X
Selection.AutoFilter Field:, Criteria1:="01" 'Cherche pour les
cellules qui contiennent 01
Range("S1").Select 'La cellule
S1 est sélectionnée
ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate 'Pour déplacer
d'une cellule vers le bas à la ligne suivante (C'est là mon problème)
ActiveCell.FormulaR1C1 = "X" 'Écrit un X dans la
cellule ou on est positionné (Normalement cellule S?)

'Dans l'exemple ci-dessus ça donne S2 et ça devrait être S242

Je veux faire écrire un X dans la cellule suivante. le problème est que la
commande qui envoie à une cellule plus bas ne respecte pas le filtre. Si
mon filtre me donne comme première ligne en dessous de l'en-tête de colonne
la ligne 242 et que je suis dans l'en-tête cellule S1, la commande pour
descendre d'une ligne co-dessus m'amème en S2 et mon X s'écrit dans cette
cellule. Je veux que la commande m'amène à la première ligne du résultat du
filtre, c'est à dire dans mon exemple ici, la cellule S242. Manuellement ça
fonctionne, ça doit pouvoir fonctionner en macro.

Merci d'avance pour votre aide !

Richard.
Avatar
Richard Martin
J'essaie ça d'ici 2 jours. Merci !


"MichDenis" a écrit dans le message de news:

Bonjour Richard,

Si ta plage est déjà filtré et que tu veuilles inscrire dans la colonne S
, un X dans toutes les cellules de cette
colonne qui est visible suite à l'application du filtre :

Je n'ai pas saisi la finalité de ton opération ...

'--------------------------
Dim Rg As Range
With Worksheets("Feuil1")
Set Rg = .Range("_FilterDatabase") _
.Columns(19).SpecialCells(xlCellTypeVisible)
End With
Rg.Value = "X"
'---------------------------

'Sinon tu pourrais faire une boucle :
For each C in Rg
C.value = "X"
next
'--------------------------


Salutations!




"Richard Martin" a écrit dans le message de news:

Je me rapproche de ma solution finale, mas il y a encore un hic !
J'ai ce code :

Selection.AutoFilter Field:, Criteria1:="=" 'Cherche pour les
cellules vide
Selection.AutoFilter Field:=2, Criteria1:="X" 'Cherche pour les
cellules qui contiennent un X
Selection.AutoFilter Field:, Criteria1:="01" 'Cherche pour les
cellules qui contiennent 01
Range("S1").Select 'La
cellule
S1 est sélectionnée
ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate 'Pour
déplacer
d'une cellule vers le bas à la ligne suivante (C'est là mon problème)
ActiveCell.FormulaR1C1 = "X" 'Écrit un X dans
la
cellule ou on est positionné (Normalement cellule S?)

'Dans l'exemple ci-dessus ça donne S2 et ça devrait être S242

Je veux faire écrire un X dans la cellule suivante. le problème est que
la
commande qui envoie à une cellule plus bas ne respecte pas le filtre. Si
mon filtre me donne comme première ligne en dessous de l'en-tête de
colonne
la ligne 242 et que je suis dans l'en-tête cellule S1, la commande pour
descendre d'une ligne co-dessus m'amème en S2 et mon X s'écrit dans cette
cellule. Je veux que la commande m'amène à la première ligne du résultat
du
filtre, c'est à dire dans mon exemple ici, la cellule S242. Manuellement
ça
fonctionne, ça doit pouvoir fonctionner en macro.

Merci d'avance pour votre aide !

Richard.





Avatar
Richard Martin
Ça c'est merveilleux et ça fonctionne. Merci !


"MichDenis" a écrit dans le message de news:

Bonjour Richard,

Si ta plage est déjà filtré et que tu veuilles inscrire dans la colonne S
, un X dans toutes les cellules de cette
colonne qui est visible suite à l'application du filtre :

Je n'ai pas saisi la finalité de ton opération ...

'--------------------------
Dim Rg As Range
With Worksheets("Feuil1")
Set Rg = .Range("_FilterDatabase") _
.Columns(19).SpecialCells(xlCellTypeVisible)
End With
Rg.Value = "X"
'---------------------------

'Sinon tu pourrais faire une boucle :
For each C in Rg
C.value = "X"
next
'--------------------------


Salutations!




"Richard Martin" a écrit dans le message de news:

Je me rapproche de ma solution finale, mas il y a encore un hic !
J'ai ce code :

Selection.AutoFilter Field:, Criteria1:="=" 'Cherche pour les
cellules vide
Selection.AutoFilter Field:=2, Criteria1:="X" 'Cherche pour les
cellules qui contiennent un X
Selection.AutoFilter Field:, Criteria1:="01" 'Cherche pour les
cellules qui contiennent 01
Range("S1").Select 'La
cellule
S1 est sélectionnée
ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate 'Pour
déplacer
d'une cellule vers le bas à la ligne suivante (C'est là mon problème)
ActiveCell.FormulaR1C1 = "X" 'Écrit un X dans
la
cellule ou on est positionné (Normalement cellule S?)

'Dans l'exemple ci-dessus ça donne S2 et ça devrait être S242

Je veux faire écrire un X dans la cellule suivante. le problème est que
la
commande qui envoie à une cellule plus bas ne respecte pas le filtre. Si
mon filtre me donne comme première ligne en dessous de l'en-tête de
colonne
la ligne 242 et que je suis dans l'en-tête cellule S1, la commande pour
descendre d'une ligne co-dessus m'amème en S2 et mon X s'écrit dans cette
cellule. Je veux que la commande m'amène à la première ligne du résultat
du
filtre, c'est à dire dans mon exemple ici, la cellule S242. Manuellement
ça
fonctionne, ça doit pouvoir fonctionner en macro.

Merci d'avance pour votre aide !

Richard.