Bouton de sélection

Guesh

XLDnaute Occasionnel
Bonjour le forum !

Ci-joint un exemple de mon problème.
Comment donner à un bouton les pouvoir de "filtre" et surtout de copier -coller.
Bref, j'espère être assez explicite dans mon exemple.

Merci pour votre aide.

Gsh
 

Pièces jointes

  • Bouton .xls
    26 KB · Affichages: 132

fhoest

XLDnaute Accro
Re : Bouton de sélection

Bonjour,
il faut faire un click droit dessus et faire affecter une macro ensuite tu entrera dans une fentre avec (rectangle click) tu fais nouvelle macro et tu va entrer sous la vba ou il te faudra ecrire du code
fais deja ceci et on continuera a t'aider pour le copier coller etc...
A+
 

Guesh

XLDnaute Occasionnel
Re : Bouton de sélection

Bonjour,
il faut faire un click droit dessus et faire affecter une macro ensuite tu entrera dans une fentre avec (rectangle click) tu fais nouvelle macro et tu va entrer sous la vba ou il te faudra ecrire du code
fais deja ceci et on continuera a t'aider pour le copier coller etc...
A+

Ok merci.
C'est justement le code qui me pose problème ... As-tu une idée ?
 

Guesh

XLDnaute Occasionnel
Re : Bouton de sélection

Bonjour
Je confirme : la demande n'est pas claire:D .
peux tu préciser par exemple en indiquant ton résultat souhaité dans ta feulle2.
Car pour l'instant j'ai beau chercher ce que tu veux faire je ne comprends pas:confused:


Bonjour Jean-Marcel,

Merci de m'accorder un peu de ton temps.

Disons qu'au niveau de la Feuil2, la cellule A3 renvoit à 'EM3'

du coup je voudrais récupérer de la Feuil 1 toutes les lignes concernés par le terme 'EM3' d'apres la colonne S, mais aussi concernées par une cellule vide au niveau de la colonne W.

Ensuite je voudrais récupérer le résultat de la FEuil1 (EM3 en colonne S + 'vide' en colonne W) dans la Feuil2 (à partir de la ligne 7) mais toutes les colonnes de la Feuil 1 ne m'interesse pas. Seule les valeurs des colonnes que j'ai appellé 1, 5, 6, 12, 13 et 22 m'intéressent.

Est ce un peu plus clair ?
 

Cousinhub

XLDnaute Barbatruc
Re : Bouton de sélection

Bonjour,

Regarde le fichier joint, pas besoin de bouton, tu modifies la valeur de la cellule A3, qui contient maintenant une liste de validation, et tu obtiens tes données par le biais d'un filtre élaboré..

Le code (dans l'évènement de la feuille 2) :

Code:
Dim Cel As Range
Dim LesEm As Object

Private Sub Worksheet_Activate()
Range("A1").Select
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Address = "$A$3" Then
    Range("A7:F1000").Clear
    Range("C3").FormulaR1C1 = _
        "=AND(Feuil1!R[2]C19=R3C1,Feuil1!R[2]C22<>"""",Feuil1!R[2]C23="""")"
    Sheets("Feuil1").Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
        "C2:C3"), CopyToRange:=Range("A6:F6"), Unique:=False
    [C3].Clear
    Cells.EntireColumn.AutoFit
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Address = "$A$3" Then
    Set LesEm = CreateObject("Scripting.Dictionary")
    With Sheets("Feuil1")
        .Range("A4:X" & .[A65000].End(xlUp).Row).Name = "base"
        For Each Cel In .Range("S5:S" & .[S65000].End(xlUp).Row)
            If Cel <> "" Then LesEm(Cel.Value) = Cel.Value
        Next Cel
    End With
    With Target.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:=Join(LesEm.Items, ",")
    End With
End If
End Sub

Bonne journée

Edit, un peu à la bourre....Salut Ges et JM
 

Pièces jointes

  • Bouton_v1.zip
    13.5 KB · Affichages: 47
Dernière édition:

Guesh

XLDnaute Occasionnel
Re : Bouton de sélection

Bonjour,

Regarde le fichier joint, pas besoin de bouton, tu modifies la valeur de la cellule A3, qui contient maintenant une liste de validation, et tu obtiens tes données par le biais d'un filtre élaboré..

Le code (dans l'évènement de la feuille 2) :

Code:
Dim Cel As Range
Dim LesEm As Object

Private Sub Worksheet_Activate()
Range("A1").Select
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Address = "$A$3" Then
    Range("A7:F1000").Clear
    Range("C3").FormulaR1C1 = _
        "=AND(Feuil1!R[2]C19=R3C1,Feuil1!R[2]C22<>"""",Feuil1!R[2]C23="""")"
    Sheets("Feuil1").Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
        "C2:C3"), CopyToRange:=Range("A6:F6"), Unique:=False
    [C3].Clear
    Cells.EntireColumn.AutoFit
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Address = "$A$3" Then
    Set LesEm = CreateObject("Scripting.Dictionary")
    With Sheets("Feuil1")
        .Range("A4:X" & .[A65000].End(xlUp).Row).Name = "base"
        For Each Cel In .Range("S5:S" & .[S65000].End(xlUp).Row)
            If Cel <> "" Then LesEm(Cel.Value) = Cel.Value
        Next Cel
    End With
    With Target.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:=Join(LesEm.Items, ",")
    End With
End If
End Sub

Bonne journée

Edit, un peu à la bourre....Salut Ges et JM


Salut Bhbh !

le code est effectivement complexe (en tous cas pas à ma porté): merci.
Pkoi utilises tu des crochets R[2] pour indiquer la ligne. Du coup à quoi correspond R[2]C19 ? A la cellule S2 de la Feuil1 ?

Bonne journée
Gsh
 

Discussions similaires

Réponses
4
Affichages
139

Statistiques des forums

Discussions
312 466
Messages
2 088 675
Membres
103 917
dernier inscrit
skullym