Stocker le numeros de lignes

Le
Ben59
Bonjour,
J'ai une feuille excel avec environ 600 lignes.
dans une colonne j'ai un critere soit 1 soit (blanc).
Comment faire à l'aide d'une macro pour que chaque ligne avec 1 soit stockée
ou selectionnée, et une fois toutes les lignes lues masquer d'un bloc toutes
ces lignes avec comme critere 1.Je dois repeter l'opération sur enviro 20
feuilles.
D'avance merci pour votre aide
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #21188581
Bonjour.
Si j'ai bien compris, active l'enregistreur de macros et sélectionne la
plage et fais un filtre automatique en sélectionnant les cellules vides
ou différentes de 1 comme critère.
Daniel
Bonjour,
J'ai une feuille excel avec environ 600 lignes.
dans une colonne j'ai un critere soit 1 soit (blanc).
Comment faire à l'aide d'une macro pour que chaque ligne avec 1 soit stockée
ou selectionnée, et une fois toutes les lignes lues masquer d'un bloc toutes
ces lignes avec comme critere 1.Je dois repeter l'opération sur enviro 20
feuilles.
D'avance merci pour votre aide


Ben59
Le #21191861
"Daniel.C" a écrit :

Bonjour.
Si j'ai bien compris, active l'enregistreur de macros et sélectionne la
plage et fais un filtre automatique en sélectionnant les cellules vides
ou différentes de 1 comme critère.
Daniel
> Bonjour,
> J'ai une feuille excel avec environ 600 lignes.
> dans une colonne j'ai un critere soit 1 soit (blanc).
> Comment faire à l'aide d'une macro pour que chaque ligne avec 1 soit stockée
> ou selectionnée, et une fois toutes les lignes lues masquer d'un bloc toutes
> ces lignes avec comme critere 1.Je dois repeter l'opération sur enviro 20
> feuilles.
> D'avance merci pour votre aide


.
Merci pour votre réponse.


Effectivement, je pensais qu'on pouvait le faire avec l'utilisation du filtre.
Je voudrais donc savoir si il est possible de memoriser le n° de chaque
ligne avec 1 dans un tableau ou autre.
Merci
Daniel.C
Le #21194711
Bonjour.
Essaie ce code :

Sub test1()
Dim Plage As Range, c As Range, Tabl(), Ctr As Integer
[A1].AutoFilter
ActiveSheet.Range([A1], [A65000].End(xlUp)).AutoFilter _
Field:=1, Criteria1:="1"
Set Plage = ActiveSheet.Range("_filterdatabase").Offset(1)
Set Plage = Plage.Resize(Plage.Rows.Count - 1,
1).SpecialCells(xlCellTypeVisible)
ReDim Tabl(0)
For Each c In Plage
Tabl(Ctr) = c.Row
Ctr = Ctr + 1
ReDim Preserve Tabl(Ctr)
Next c
For i = 0 To UBound(Tabl) - 1
txt = txt & Tabl(i) & vbLf
Next i
MsgBox txt
End Sub

Daniel



"Daniel.C" a écrit :

Bonjour.
Si j'ai bien compris, active l'enregistreur de macros et sélectionne la
plage et fais un filtre automatique en sélectionnant les cellules vides
ou différentes de 1 comme critère.
Daniel
Bonjour,
J'ai une feuille excel avec environ 600 lignes.
dans une colonne j'ai un critere soit 1 soit (blanc).
Comment faire à l'aide d'une macro pour que chaque ligne avec 1 soit
stockée ou selectionnée, et une fois toutes les lignes lues masquer d'un
bloc toutes ces lignes avec comme critere 1.Je dois repeter l'opération
sur enviro 20 feuilles.
D'avance merci pour votre aide




.
Merci pour votre réponse.


Effectivement, je pensais qu'on pouvait le faire avec l'utilisation du
filtre. Je voudrais donc savoir si il est possible de memoriser le n° de
chaque ligne avec 1 dans un tableau ou autre.
Merci


Ben59
Le #21200531
Merci pour la réponse.
Je vais tester ton code ce soir ou demain et je te tiens auu courant.

bonne joyrnée.

"Daniel.C" a écrit :

Bonjour.
Essaie ce code :

Sub test1()
Dim Plage As Range, c As Range, Tabl(), Ctr As Integer
[A1].AutoFilter
ActiveSheet.Range([A1], [A65000].End(xlUp)).AutoFilter _
Field:=1, Criteria1:="1"
Set Plage = ActiveSheet.Range("_filterdatabase").Offset(1)
Set Plage = Plage.Resize(Plage.Rows.Count - 1,
1).SpecialCells(xlCellTypeVisible)
ReDim Tabl(0)
For Each c In Plage
Tabl(Ctr) = c.Row
Ctr = Ctr + 1
ReDim Preserve Tabl(Ctr)
Next c
For i = 0 To UBound(Tabl) - 1
txt = txt & Tabl(i) & vbLf
Next i
MsgBox txt
End Sub

Daniel


>
> "Daniel.C" a écrit :
>
>> Bonjour.
>> Si j'ai bien compris, active l'enregistreur de macros et sélectionne la
>> plage et fais un filtre automatique en sélectionnant les cellules vides
>> ou différentes de 1 comme critère.
>> Daniel
>>> Bonjour,
>>> J'ai une feuille excel avec environ 600 lignes.
>>> dans une colonne j'ai un critere soit 1 soit (blanc).
>>> Comment faire à l'aide d'une macro pour que chaque ligne avec 1 soit
>>> stockée ou selectionnée, et une fois toutes les lignes lues masquer d'un
>>> bloc toutes ces lignes avec comme critere 1.Je dois repeter l'opération
>>> sur enviro 20 feuilles.
>>> D'avance merci pour votre aide
>>
>>
>> .
>> Merci pour votre réponse.
> Effectivement, je pensais qu'on pouvait le faire avec l'utilisation du
> filtre. Je voudrais donc savoir si il est possible de memoriser le n° de
> chaque ligne avec 1 dans un tableau ou autre.
> Merci


.



Ben59
Le #21202141
Bonsoir,
J'ai recopié le script, mais il semblerait que j'ai un problème de syntaxe
avec la ligne suivante
Set Plage = Plage.Resize(Plage.Rows.Count - 1,
1).SpecialCells(xlCellTypeVisible)
Je vais essayer de trouver mais je ne connais pas tres bien la syntaxe.

Bonne soirée

"Ben59" a écrit :

Merci pour la réponse.
Je vais tester ton code ce soir ou demain et je te tiens auu courant.

bonne joyrnée.

"Daniel.C" a écrit :

> Bonjour.
> Essaie ce code :
>
> Sub test1()
> Dim Plage As Range, c As Range, Tabl(), Ctr As Integer
> [A1].AutoFilter
> ActiveSheet.Range([A1], [A65000].End(xlUp)).AutoFilter _
> Field:=1, Criteria1:="1"
> Set Plage = ActiveSheet.Range("_filterdatabase").Offset(1)
> Set Plage = Plage.Resize(Plage.Rows.Count - 1,
> 1).SpecialCells(xlCellTypeVisible)
> ReDim Tabl(0)
> For Each c In Plage
> Tabl(Ctr) = c.Row
> Ctr = Ctr + 1
> ReDim Preserve Tabl(Ctr)
> Next c
> For i = 0 To UBound(Tabl) - 1
> txt = txt & Tabl(i) & vbLf
> Next i
> MsgBox txt
> End Sub
>
> Daniel
>
>
> >
> > "Daniel.C" a écrit :
> >
> >> Bonjour.
> >> Si j'ai bien compris, active l'enregistreur de macros et sélectionne la
> >> plage et fais un filtre automatique en sélectionnant les cellules vides
> >> ou différentes de 1 comme critère.
> >> Daniel
> >>> Bonjour,
> >>> J'ai une feuille excel avec environ 600 lignes.
> >>> dans une colonne j'ai un critere soit 1 soit (blanc).
> >>> Comment faire à l'aide d'une macro pour que chaque ligne avec 1 soit
> >>> stockée ou selectionnée, et une fois toutes les lignes lues masquer d'un
> >>> bloc toutes ces lignes avec comme critere 1.Je dois repeter l'opération
> >>> sur enviro 20 feuilles.
> >>> D'avance merci pour votre aide
> >>
> >>
> >> .
> >> Merci pour votre réponse.
> > Effectivement, je pensais qu'on pouvait le faire avec l'utilisation du
> > filtre. Je voudrais donc savoir si il est possible de memoriser le n° de
> > chaque ligne avec 1 dans un tableau ou autre.
> > Merci
>
>
> .
>


Daniel.C
Le #21202311
Bonsoir.
Les deux lignes :

Set Plage = Plage.Resize(Plage.Rows.Count - 1,
1).SpecialCells(xlCellTypeVisible)

doivent être sur une seule ligne dans ta macro. La faute au client de
messagerie qui renvoie à la ligne quand le texte est trop long.

Daniel

Bonsoir,
J'ai recopié le script, mais il semblerait que j'ai un problème de syntaxe
avec la ligne suivante
Set Plage = Plage.Resize(Plage.Rows.Count - 1,
1).SpecialCells(xlCellTypeVisible)
Je vais essayer de trouver mais je ne connais pas tres bien la syntaxe.

Bonne soirée

"Ben59" a écrit :

Merci pour la réponse.
Je vais tester ton code ce soir ou demain et je te tiens auu courant.

bonne joyrnée.

"Daniel.C" a écrit :

Bonjour.
Essaie ce code :

Sub test1()
Dim Plage As Range, c As Range, Tabl(), Ctr As Integer
[A1].AutoFilter
ActiveSheet.Range([A1], [A65000].End(xlUp)).AutoFilter _
Field:=1, Criteria1:="1"
Set Plage = ActiveSheet.Range("_filterdatabase").Offset(1)
Set Plage = Plage.Resize(Plage.Rows.Count - 1,
1).SpecialCells(xlCellTypeVisible)
ReDim Tabl(0)
For Each c In Plage
Tabl(Ctr) = c.Row
Ctr = Ctr + 1
ReDim Preserve Tabl(Ctr)
Next c
For i = 0 To UBound(Tabl) - 1
txt = txt & Tabl(i) & vbLf
Next i
MsgBox txt
End Sub

Daniel



"Daniel.C" a écrit :

Bonjour.
Si j'ai bien compris, active l'enregistreur de macros et sélectionne la
plage et fais un filtre automatique en sélectionnant les cellules vides
ou différentes de 1 comme critère.
Daniel
Bonjour,
J'ai une feuille excel avec environ 600 lignes.
dans une colonne j'ai un critere soit 1 soit (blanc).
Comment faire à l'aide d'une macro pour que chaque ligne avec 1 soit
stockée ou selectionnée, et une fois toutes les lignes lues masquer
d'un bloc toutes ces lignes avec comme critere 1.Je dois repeter
l'opération sur enviro 20 feuilles.
D'avance merci pour votre aide




.
Merci pour votre réponse.


Effectivement, je pensais qu'on pouvait le faire avec l'utilisation du
filtre. Je voudrais donc savoir si il est possible de memoriser le n° de
chaque ligne avec 1 dans un tableau ou autre.
Merci




.







Ben59
Le #21205331
Bonjour,
Cela fonctionne.Par contre je ne comprends pas bien la ligne suivante :
Set Plage = ActiveSheet.Range("_filterdatabase").Offset(1)...
Que fait eactement la fonction "Offset"
Merci beaucoup de ton aide

"Daniel.C" a écrit :

Bonsoir.
Les deux lignes :

Set Plage = Plage.Resize(Plage.Rows.Count - 1,
1).SpecialCells(xlCellTypeVisible)

doivent être sur une seule ligne dans ta macro. La faute au client de
messagerie qui renvoie à la ligne quand le texte est trop long.

Daniel

> Bonsoir,
> J'ai recopié le script, mais il semblerait que j'ai un problème de syntaxe
> avec la ligne suivante
> Set Plage = Plage.Resize(Plage.Rows.Count - 1,
> 1).SpecialCells(xlCellTypeVisible)
> Je vais essayer de trouver mais je ne connais pas tres bien la syntaxe.
>
> Bonne soirée
>
> "Ben59" a écrit :
>
>> Merci pour la réponse.
>> Je vais tester ton code ce soir ou demain et je te tiens auu courant.
>>
>> bonne joyrnée.
>>
>> "Daniel.C" a écrit :
>>
>>> Bonjour.
>>> Essaie ce code :
>>>
>>> Sub test1()
>>> Dim Plage As Range, c As Range, Tabl(), Ctr As Integer
>>> [A1].AutoFilter
>>> ActiveSheet.Range([A1], [A65000].End(xlUp)).AutoFilter _
>>> Field:=1, Criteria1:="1"
>>> Set Plage = ActiveSheet.Range("_filterdatabase").Offset(1)
>>> Set Plage = Plage.Resize(Plage.Rows.Count - 1,
>>> 1).SpecialCells(xlCellTypeVisible)
>>> ReDim Tabl(0)
>>> For Each c In Plage
>>> Tabl(Ctr) = c.Row
>>> Ctr = Ctr + 1
>>> ReDim Preserve Tabl(Ctr)
>>> Next c
>>> For i = 0 To UBound(Tabl) - 1
>>> txt = txt & Tabl(i) & vbLf
>>> Next i
>>> MsgBox txt
>>> End Sub
>>>
>>> Daniel
>>>
>>>
>>>>
>>>> "Daniel.C" a écrit :
>>>>
>>>>> Bonjour.
>>>>> Si j'ai bien compris, active l'enregistreur de macros et sélectionne la
>>>>> plage et fais un filtre automatique en sélectionnant les cellules vides
>>>>> ou différentes de 1 comme critère.
>>>>> Daniel
>>>>>> Bonjour,
>>>>>> J'ai une feuille excel avec environ 600 lignes.
>>>>>> dans une colonne j'ai un critere soit 1 soit (blanc).
>>>>>> Comment faire à l'aide d'une macro pour que chaque ligne avec 1 soit
>>>>>> stockée ou selectionnée, et une fois toutes les lignes lues masquer
>>>>>> d'un bloc toutes ces lignes avec comme critere 1.Je dois repeter
>>>>>> l'opération sur enviro 20 feuilles.
>>>>>> D'avance merci pour votre aide
>>>>>
>>>>>
>>>>> .
>>>>> Merci pour votre réponse.
>>>> Effectivement, je pensais qu'on pouvait le faire avec l'utilisation du
>>>> filtre. Je voudrais donc savoir si il est possible de memoriser le n° de
>>>> chaque ligne avec 1 dans un tableau ou autre.
>>>> Merci
>>>
>>>
>>> .
>>>


.



Daniel.C
Le #21206391
Bonjour.
Range("_filterdatabase") représente la plage filtrée, y compris la ligne
d'entête.
ActiveSheet.Range("_filterdatabase").Offset(1)
décale cette plage pour ne pas prendre la ligne d'entêtes; ce faisant,
Plage prend en compte la ligne d'en dessous, qu'il faut éliminer, c'est
ce que fait la commande suivante :
Set Plage = Plage.Resize(Plage.Rows.Count -
1,1).SpecialCells(xlCellTypeVisible)
(sur une seule ligne)
De plus la méthode "Resize" réduit Plage à la première colonne d'entête.
Enfin SpecialCells(xlCellTypeVisible) réduit la plage aux seules
cellules visibles.
Pour une meilleure compréhension, ajoute :
Plage.Select entre chaque ligne , exécute le code ligne par ligne (en
utilisant la touche F8 et regarde ce qui est sélectionné sur la feuille.
Cordialement.
Daniel


Ben59 a écrit :
Bonjour,
Cela fonctionne.Par contre je ne comprends pas bien la ligne suivante :
Set Plage = ActiveSheet.Range("_filterdatabase").Offset(1)...
Que fait eactement la fonction "Offset"
Merci beaucoup de ton aide

"Daniel.C" a écrit :

Bonsoir.
Les deux lignes :

Set Plage = Plage.Resize(Plage.Rows.Count - 1,
1).SpecialCells(xlCellTypeVisible)

doivent être sur une seule ligne dans ta macro. La faute au client de
messagerie qui renvoie à la ligne quand le texte est trop long.

Daniel

Bonsoir,
J'ai recopié le script, mais il semblerait que j'ai un problème de syntaxe
avec la ligne suivante
Set Plage = Plage.Resize(Plage.Rows.Count - 1,
1).SpecialCells(xlCellTypeVisible)
Je vais essayer de trouver mais je ne connais pas tres bien la syntaxe.

Bonne soirée

"Ben59" a écrit :

Merci pour la réponse.
Je vais tester ton code ce soir ou demain et je te tiens auu courant.

bonne joyrnée.

"Daniel.C" a écrit :

Bonjour.
Essaie ce code :

Sub test1()
Dim Plage As Range, c As Range, Tabl(), Ctr As Integer
[A1].AutoFilter
ActiveSheet.Range([A1], [A65000].End(xlUp)).AutoFilter _
Field:=1, Criteria1:="1"
Set Plage = ActiveSheet.Range("_filterdatabase").Offset(1)
Set Plage = Plage.Resize(Plage.Rows.Count - 1,
1).SpecialCells(xlCellTypeVisible)
ReDim Tabl(0)
For Each c In Plage
Tabl(Ctr) = c.Row
Ctr = Ctr + 1
ReDim Preserve Tabl(Ctr)
Next c
For i = 0 To UBound(Tabl) - 1
txt = txt & Tabl(i) & vbLf
Next i
MsgBox txt
End Sub

Daniel


"Daniel.C" a écrit :

Bonjour.
Si j'ai bien compris, active l'enregistreur de macros et sélectionne la
plage et fais un filtre automatique en sélectionnant les cellules vides
ou différentes de 1 comme critère.
Daniel
Bonjour,
J'ai une feuille excel avec environ 600 lignes.
dans une colonne j'ai un critere soit 1 soit (blanc).
Comment faire à l'aide d'une macro pour que chaque ligne avec 1 soit
stockée ou selectionnée, et une fois toutes les lignes lues masquer
d'un bloc toutes ces lignes avec comme critere 1.Je dois repeter
l'opération sur enviro 20 feuilles.
D'avance merci pour votre aide



.
Merci pour votre réponse.


Effectivement, je pensais qu'on pouvait le faire avec l'utilisation du
filtre. Je voudrais donc savoir si il est possible de memoriser le n° de
chaque ligne avec 1 dans un tableau ou autre.
Merci



.








.





Ben59
Le #21208671
Encore Merci pour ces infos.
Je commence a y voir plus clair.
Cordialement

"Daniel.C" a écrit :

Bonjour.
Range("_filterdatabase") représente la plage filtrée, y compris la ligne
d'entête.
ActiveSheet.Range("_filterdatabase").Offset(1)
décale cette plage pour ne pas prendre la ligne d'entêtes; ce faisant,
Plage prend en compte la ligne d'en dessous, qu'il faut éliminer, c'est
ce que fait la commande suivante :
Set Plage = Plage.Resize(Plage.Rows.Count -
1,1).SpecialCells(xlCellTypeVisible)
(sur une seule ligne)
De plus la méthode "Resize" réduit Plage à la première colonne d'entête.
Enfin SpecialCells(xlCellTypeVisible) réduit la plage aux seules
cellules visibles.
Pour une meilleure compréhension, ajoute :
Plage.Select entre chaque ligne , exécute le code ligne par ligne (en
utilisant la touche F8 et regarde ce qui est sélectionné sur la feuille.
Cordialement.
Daniel


Ben59 a écrit :
> Bonjour,
> Cela fonctionne.Par contre je ne comprends pas bien la ligne suivante :
> Set Plage = ActiveSheet.Range("_filterdatabase").Offset(1)...
> Que fait eactement la fonction "Offset"
> Merci beaucoup de ton aide
>
> "Daniel.C" a écrit :
>
>> Bonsoir.
>> Les deux lignes :
>>
>> Set Plage = Plage.Resize(Plage.Rows.Count - 1,
>> 1).SpecialCells(xlCellTypeVisible)
>>
>> doivent être sur une seule ligne dans ta macro. La faute au client de
>> messagerie qui renvoie à la ligne quand le texte est trop long.
>>
>> Daniel
>>
>>> Bonsoir,
>>> J'ai recopié le script, mais il semblerait que j'ai un problème de syntaxe
>>> avec la ligne suivante
>>> Set Plage = Plage.Resize(Plage.Rows.Count - 1,
>>> 1).SpecialCells(xlCellTypeVisible)
>>> Je vais essayer de trouver mais je ne connais pas tres bien la syntaxe.
>>>
>>> Bonne soirée
>>>
>>> "Ben59" a écrit :
>>>
>>>> Merci pour la réponse.
>>>> Je vais tester ton code ce soir ou demain et je te tiens auu courant.
>>>>
>>>> bonne joyrnée.
>>>>
>>>> "Daniel.C" a écrit :
>>>>
>>>>> Bonjour.
>>>>> Essaie ce code :
>>>>>
>>>>> Sub test1()
>>>>> Dim Plage As Range, c As Range, Tabl(), Ctr As Integer
>>>>> [A1].AutoFilter
>>>>> ActiveSheet.Range([A1], [A65000].End(xlUp)).AutoFilter _
>>>>> Field:=1, Criteria1:="1"
>>>>> Set Plage = ActiveSheet.Range("_filterdatabase").Offset(1)
>>>>> Set Plage = Plage.Resize(Plage.Rows.Count - 1,
>>>>> 1).SpecialCells(xlCellTypeVisible)
>>>>> ReDim Tabl(0)
>>>>> For Each c In Plage
>>>>> Tabl(Ctr) = c.Row
>>>>> Ctr = Ctr + 1
>>>>> ReDim Preserve Tabl(Ctr)
>>>>> Next c
>>>>> For i = 0 To UBound(Tabl) - 1
>>>>> txt = txt & Tabl(i) & vbLf
>>>>> Next i
>>>>> MsgBox txt
>>>>> End Sub
>>>>>
>>>>> Daniel
>>>>>
>>>>>
>>>>>> "Daniel.C" a écrit :
>>>>>>
>>>>>>> Bonjour.
>>>>>>> Si j'ai bien compris, active l'enregistreur de macros et sélectionne la
>>>>>>> plage et fais un filtre automatique en sélectionnant les cellules vides
>>>>>>> ou différentes de 1 comme critère.
>>>>>>> Daniel
>>>>>>>> Bonjour,
>>>>>>>> J'ai une feuille excel avec environ 600 lignes.
>>>>>>>> dans une colonne j'ai un critere soit 1 soit (blanc).
>>>>>>>> Comment faire à l'aide d'une macro pour que chaque ligne avec 1 soit
>>>>>>>> stockée ou selectionnée, et une fois toutes les lignes lues masquer
>>>>>>>> d'un bloc toutes ces lignes avec comme critere 1.Je dois repeter
>>>>>>>> l'opération sur enviro 20 feuilles.
>>>>>>>> D'avance merci pour votre aide
>>>>>>>
>>>>>>> .
>>>>>>> Merci pour votre réponse.
>>>>>> Effectivement, je pensais qu'on pouvait le faire avec l'utilisation du
>>>>>> filtre. Je voudrais donc savoir si il est possible de memoriser le n° de
>>>>>> chaque ligne avec 1 dans un tableau ou autre.
>>>>>> Merci
>>>>>
>>>>> .
>>>>>
>>
>> .
>>
.



Publicité
Poster une réponse
Anonyme