filtre de données : adresse ligne de début et adresse ligne de fin
24 réponses
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...
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
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...
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
Jacky
Bonjour, Ceci retourne l'adresse de la plage des cellules visibles en colonne C Adapter le nom de la feuille
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
Bonjour,
Ceci retourne l'adresse de la plage des cellules visibles en colonne C
Adapter le nom de la feuille
"JP" <jthillard@gmail.com> a écrit dans le message de news:
264a4a47-f66c-4ff3-a8bf-1b294ee27e87@googlegroups.com...
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...
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
JP
Bonjour Daniel,
Super efficace, je ne comprends pas tout mais je vais essayer de détaille r tout cela.
Merci
JP
Bonjour Daniel,
Super efficace, je ne comprends pas tout mais je vais essayer de détaille r tout cela.
Super efficace, je ne comprends pas tout mais je vais essayer de détaille r tout cela.
Merci
JP
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
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.
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
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
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.
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
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
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
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
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
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 :
264a4a47-f66c-4ff3-a8bf-1b294ee27e87@googlegroups.com...
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...
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
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
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
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
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
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
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