Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

filtre de données : adresse ligne de début et adresse ligne de fin

24 réponses
Avatar
JP
Bonjour,

De retour pour une nouvelle question.
J'ai un filtre appliqu=E9 en colonne C.
Je voudrais avec une boucle r=E9cup=E9rer des noms qui se trouvent en colon=
ne A.
Il existe peut =EAtre un moyen simple de le faire mais je pensais le faire =
avec une boucle toute simple genre For ... Next
Pour cela, il faut que je connaisse le num=E9ro de ligne du d=E9but et le n=
um=E9ro de ligne de fin pour =E9tablir la boucle.

Comment puis-je faire?=20
Cette solution ou une autre...

Merci

JP

10 réponses

1 2 3
Avatar
DanielCo
Bonjour,

Sub test()
Dim Plage As Range, C As Range
Set Plage = Intersect(ActiveSheet.AutoFilter.Range,
[C:C]).Offset(1, -2)
Set Plage = Plage.Resize(Plage.Rows.Count - 1)
If Application.Subtotal(103, Plage) > 0 Then
Set Plage = Plage.SpecialCells(xlCellTypeVisible)
End If
For Each C In Plage
MsgBox C.Value
Next C
End Sub

Cordialement.
Daniel


Bonjour,

De retour pour une nouvelle question.
J'ai un filtre appliqué en colonne C.
Je voudrais avec une boucle récupérer des noms qui se trouvent en colonne A.
Il existe peut être un moyen simple de le faire mais je pensais le faire avec
une boucle toute simple genre For ... Next Pour cela, il faut que je
connaisse le numéro de ligne du début et le numéro de ligne de fin pour
établir la boucle.

Comment puis-je faire?
Cette solution ou une autre...

Merci

JP
Avatar
Jacky
Bonjour,
Ceci retourne l'adresse de la plage des cellules visibles en colonne C
Adapter le nom de la feuille

MsgBox Worksheets("feuil1").Range("C1:C" & Cells(Rows.Count,
3).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Address
--
Salutations
JJ


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

Bonjour,

De retour pour une nouvelle question.
J'ai un filtre appliqué en colonne C.
Je voudrais avec une boucle récupérer des noms qui se trouvent en colonne A.
Il existe peut être un moyen simple de le faire mais je pensais le faire avec une boucle toute simple genre
For ... Next
Pour cela, il faut que je connaisse le numéro de ligne du début et le numéro de ligne de fin pour établir la
boucle.

Comment puis-je faire?
Cette solution ou une autre...

Merci

JP
Avatar
JP
Bonjour Daniel,

Super efficace, je ne comprends pas tout mais je vais essayer de détaille r tout cela.

Merci

JP
Avatar
JP
Jacky,

Super aussi, ainsi je peux mettre une boucle for ... Next en place.
Vous êtes des oufs du VBA vous deux. Je vais vous filer mon projet pour l e terminer. hihi.

Merci encore à vous deux

JP
Avatar
JP
Super Jacky, je n'avais pas vu ta réponse.
Cette ligne donne effectivement les coordonnées.
Vous êtes des oufs du VBA vous deux. Je vais vous filer le projet pour qu e vous vous amusiez.
Je suis en train de retravailler la proposition de Daniel.
Ca va moins vite car il faut que je récupère le prénom colonne B et q ue je concatène le tout pour mettre dans les labels.


JP
Avatar
JP
Daniel, je reviens vers toi car je ne parviens pas à modifier la macro qu e tu as faite tout à l'heure.
Je voudrais faire apparaitre le prénom à coté du nom dans les labels.
Ci dessous ce que j'ai bidouillé mais qui ne fonctionne pas!

Merci
jp


' hauteur de l'userform4
ht = Sheets("suivi conventions").Cells(1, 8).Value 'récupère la valeu r calculée par sous.total(3;A2:A1000)en A8
ht = (ht * 15.81) + 94
UserForm4.Height = ht
' récupérer les noms et prenom sur une plage filtrée
Dim nom As Range, C As Range
Sheets("suivi conventions").Select
Set nom = Intersect(ActiveSheet.AutoFilter.Range, [C:C]).Offset(1, -2 )
' Set prenom = Intersect(ActiveSheet.AutoFilter.Range, [C:C]).Offset(1 , -1)
' Set nom_prenom = nom & " " & prenom 'renvoie une erreur
Set nom = nom.Resize(nom.Rows.Count - 1)
If Application.Subtotal(103, nom) > 0 Then
Set nom = nom.SpecialCells(xlCellTypeVisible)
End If
' Efface le contenu des labels noms de élèves de la classe
For efface = 1 To 32
Me.Controls("Label" & efface) = ""
Next efface
L = 1
For Each C In nom
Me.Controls("Label" & L) = C.Value
' MsgBox C.Value
L = L + 1
Next C
Avatar
Jacquouille
Bonsoir
Une idée toute simple:
Après avoir appliqué le filtre en colonne C, si tu faisais un copier-coller
de ce qui reste de la colonne A ?

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"JP" a écrit dans le message de groupe de discussion :


Bonjour,

De retour pour une nouvelle question.
J'ai un filtre appliqué en colonne C.
Je voudrais avec une boucle récupérer des noms qui se trouvent en colonne A.
Il existe peut être un moyen simple de le faire mais je pensais le faire
avec une boucle toute simple genre For ... Next
Pour cela, il faut que je connaisse le numéro de ligne du début et le numéro
de ligne de fin pour établir la boucle.

Comment puis-je faire?
Cette solution ou une autre...

Merci

JP
Avatar
DanielCo
Oui. Ils sont où les labels, sur une feuille ou un userform ? Est-ce
qu'ils sont déjà créés ou faut-il les créer dynamiquement ?
Daniel


Daniel, je reviens vers toi car je ne parviens pas à modifier la macro que tu
as faite tout à l'heure. Je voudrais faire apparaitre le prénom à coté du nom
dans les labels. Ci dessous ce que j'ai bidouillé mais qui ne fonctionne pas!

Merci
jp


' hauteur de l'userform4
ht = Sheets("suivi conventions").Cells(1, 8).Value 'récupère la valeur
calculée par sous.total(3;A2:A1000)en A8 ht = (ht * 15.81) + 94
UserForm4.Height = ht
' récupérer les noms et prenom sur une plage filtrée
Dim nom As Range, C As Range
Sheets("suivi conventions").Select
Set nom = Intersect(ActiveSheet.AutoFilter.Range, [C:C]).Offset(1, -2)
' Set prenom = Intersect(ActiveSheet.AutoFilter.Range, [C:C]).Offset(1,
-1) ' Set nom_prenom = nom & " " & prenom 'renvoie une erreur
Set nom = nom.Resize(nom.Rows.Count - 1)
If Application.Subtotal(103, nom) > 0 Then
Set nom = nom.SpecialCells(xlCellTypeVisible)
End If
' Efface le contenu des labels noms de élèves de la classe
For efface = 1 To 32
Me.Controls("Label" & efface) = ""
Next efface
L = 1
For Each C In nom
Me.Controls("Label" & L) = C.Value
' MsgBox C.Value
L = L + 1
Next C
Avatar
JP
Ils sont dans l'userform4 et ils sont créés.

JP
Avatar
DanielCo
J'ai mis un bouton dans le userform pour provoquer la copie. Vooici les
macros que j'ai ajoutés :

Private Sub CommandButton1_Click()
Dim Plage As Range, C As Range, Res As Integer
Dim Ctrl As Control
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.Label Then Ctrl.Caption = ""
Next Ctrl
Set Plage = Intersect(ActiveSheet.AutoFilter.Range,
[C:C]).Offset(1, -2)
Set Plage = Plage.Resize(Plage.Rows.Count - 1)
If Application.Subtotal(103, Plage) > 0 Then
Set Plage = Plage.SpecialCells(xlCellTypeVisible)
End If
Res = 0
For Each C In Plage
For i = Res To Me.Controls.Count - 1
If TypeOf Me.Controls(Res) Is MSForms.Label Then
Set Var = Me.Controls(0)
Me.Controls(Res).Caption = C.Value
Exit For
End If
Next i
Res = Res + 1
Next C
End Sub


Private Sub UserForm_Activate()
Dim Ctrl As Control
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.Label Then Ctrl.Caption = ""
Next Ctrl
End Sub

Le classeur modèle se trouve à l'adresse :

http://cjoint.com/?BKzlDRI2aTX

S'il y a des points obscurs dans le code n'hésite pas à demander des
explications.
Daniel


Ils sont dans l'userform4 et ils sont créés.

JP
1 2 3