Selection

Fermé
DAMMON Messages postés 25 Date d'inscription vendredi 8 avril 2016 Statut Membre Dernière intervention 20 janvier 2017 - 24 juin 2016 à 13:54
DAMMON Messages postés 25 Date d'inscription vendredi 8 avril 2016 Statut Membre Dernière intervention 20 janvier 2017 - 28 juin 2016 à 12:13
Bonjour,
Merci d'avance pour votre temps que vous sacrifiez à aider tout le monde.
Je voudrais que vous m'aidez à trouver de solution au problème suivant: je fais une programmation en VBA EXCEL et je voudrais créer un bouton (valider) et deux combobox; le classeur contenant déjà des données avec des dates sur certaines lignes précise. Dans le premier combobox, il y a des mois à sélectionner; et dans le deuxième, il y a des années à sélectionner. Je voudrais que lorsque je sélectionne une date et une année, et que je clique sur le bouton "valider" que la sélection soit faite à partir de ce mois et cette date jusqu'à la dernière ligne non vide de mon classeur.
Aidez moi s'il vous plait.
Merci d'avance


3 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
26 juin 2016 à 12:07
Bonjour Dammon, bonjour le forum,

Manque de précision dans tes explications :
• Dans quel onglet se trouvent les données ?
• Dans quelle cellule commence le tableau des données ?
• Dans quelle colonne se trouve les dates ?
• Tu veux sélectionner quoi :
- Toutes les cellules ?
- Toutes les lignes du tableau ?
- Toutes les lignes de l'onglet ?
... correspondant au critère
0
DAMMON Messages postés 25 Date d'inscription vendredi 8 avril 2016 Statut Membre Dernière intervention 20 janvier 2017
26 juin 2016 à 22:32
Merci pour la reponse
en fait j'ai un userform qui me permet d'envoyer les données sur la feuille de calcule. chaque donnée occupe environ 10 lignes et il y a plusieurs bloc de donnée comme cela. Après chaque 10 ligne de donnée, une ligne est sauté pour faire la difference entre chaque bloc. En début de ligne pour un bloc, il y a la cellule A x (x étant une cellule quelconque selon que les données se suivent) et dans cette cellule, je mets le mois (exemple Janvier...) puis la cellule Ax suivante je met l'année ( expemple 2016 .... ) ensuite les données; et je saute une autre ligne encore avant de reprendre presque les meme choses mais avec le mois et l'année qui diffèrent.
Ce que je veux maintenant, c'est que j'ai créer deux combobox; le premier pour sélectionner le mois et le second pour sélectionner l'année, puis un bouton "Valider" qui va me permettre de copier toute les données d'un bloc jusqu'à la dernière ligne non vide des données, (sachant qu'une ligne est toujours sauté après chaque bloc) si le mois et l'année correspondent au mois et l'année des cellule Ax comme j'essayais de l'expliquer plus haut.
Je pense être un peu claire si non, donnez moi un idée sur ce vous avez compris.
Merci d'avance à vous
0
DAMMON Messages postés 25 Date d'inscription vendredi 8 avril 2016 Statut Membre Dernière intervention 20 janvier 2017
26 juin 2016 à 22:31
--Merci pour la reponse
en fait j'ai un userform qui me permet d'envoyer les données sur la feuille de calcule. chaque donnée occupe environ 10 lignes et il y a plusieurs bloc de donnée comme cela. Après chaque 10 ligne de donnée, une ligne est sauté pour faire la difference entre chaque bloc. En début de ligne pour un bloc, il y a la cellule A x (x étant une cellule quelconque selon que les données se suivent) et dans cette cellule, je mets le mois (exemple Janvier...) puis la cellule Ax suivante je met l'année ( expemple 2016 .... ) ensuite les données; et je saute une autre ligne encore avant de reprendre presque les meme choses mais avec le mois et l'année qui diffèrent.
Ce que je veux maintenant, c'est que j'ai créer deux combobox; le premier pour sélectionner le mois et le second pour sélectionner l'année, puis un bouton "Valider" qui va me permettre de copier toute les données d'un bloc jusqu'à la dernière ligne non vide des données, (sachant qu'une ligne est toujours sauté après chaque bloc) si le mois et l'année correspondent au mois et l'année des cellule Ax comme j'essayais de l'expliquer plus haut.
Je pense être un peu claire si non, donnez moi un idée sur ce vous avez compris.
Merci d'avance à vous
"La prunelle des yeux de l'Eternel"
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
27 juin 2016 à 09:47
Bonjour Dammon, bonjour le forum,

Il est dommage qu'en tant que demandeur tu ne fasses pas l'effort d'envoyer un petit fichier exemple. Ça nous oblige à nous de le faire pour vous... C'est pour cela que certains posts restent sans réponse car faire votre travail est parfois pénible. Je te le dis pour un prochain problème, n'hésite pas à joindre un petit fichier...

Le contexte :
- Une UserForm (UserForm1)
- Deux Comboboxes (ComboBox1 pour les mois, ComboBox2 pour les années)
- Deux CommandButtons (CommandButton1 = Valider, CommandButton2 = Annuler)
- Deux Onglets : un onglet Données (contenant les données), un onglet Listes contenant les mois (colonne A) et les années (colonne B)
Tu adapteras à ton cas...

Le Code :
Private Sub UserForm_Initialize() 'à l'initialisation de l'Userform
With Worksheets("Listes") 'prend en compte l'onglet "Listes"
    Me.ComboBox1.List = .Range("A2:A13").Value 'alimente la ComboBox1
    Me.ComboBox2.List = .Range("B2:B" & .Range("B" & Application.Rows.Count).End(xlUp).Row).Value 'alimente la ComboBox2
End With 'fin de la prise en compte de l'onlet "Listes"
End Sub

Private Sub CommandButton1_Click() 'bouton "Valider"
Dim R As Range 'déclare la variable R (Recherche)
Dim PA As String 'déclare la variable PA (Première Adresse)
Dim PL As Range 'déclare la variable PL (PLage)

With Sheets("Données") 'prend en compte l'onglet "Données"
    Set R = .Columns(1).Find(Me.ComboBox1.Value, , xlValues, xlWhole) 'définit la recherche R (Recherche la valeur entière de la ComboBox1 dans la colonne 1 (=A) de l'onglet
    If Not R Is Nothing Then 'condition : si il existe au moins une occurrence
        PA = R.Address 'définit l'adresse PA de la première occurrence trouvée
        Do 'exécute
            If CStr(R.Offset(0, 1).Value) = Me.ComboBox2.Value Then 'si la valeur de la cellule en colonne B de l'occurrence trouvée (convertie en texte) est égale à la valeur de la ComboBox2
                Set PL = R.CurrentRegion 'définit la plage PL
                Set PL = PL.Offset(1, 0).Resize(PL.Rows.Count - 1, PL.Columns.Count) 'redéfinit la plage PL (sans la première ligne avec la date)
                PL.Select 'sélectionne la plage PL
            End If 'fin de la condition
            Set R = .Columns(1).FindNext(R) 'redéfinit la recherche R (occurrence suivante)
        Loop While Not R Is Nothing And R.Address <> PA 'boucle tant qu'il existe de nouvelles occurrences ailleurs qu'en PA
    End If 'fin de la condition
End With 'fin de la prise en compte de l'onlet "Données"
Unload Me 'vide et ferme l'UserForm
End Sub

Private Sub CommandButton2_Click() 'bouton "Annuler"
Unload Me 'vide et ferme l'UserForm
End Sub


Onglet Données avtivé, clique sur le bouton Sélection par date, choisis parmi une des trois dates (Janvier 2000 / Février 2000 / Janvier 2001)

Le fichier :
https://www.cjoint.com/c/FFBhS2gKnzI

0
DAMMON Messages postés 25 Date d'inscription vendredi 8 avril 2016 Statut Membre Dernière intervention 20 janvier 2017
28 juin 2016 à 12:13
Merci bien pour la réponse et aussi pour le conseil. J'aurais pu le faire, mais du fait que je soit novice et ne sachant pas que c'était indispensable, je ne l'ai pas fait.
J'en tiendrai compte les fois prochaines sans soucis.
Merci encore pour la réponse; je fais l'essayer et te faire signe
A plus
0