Je reformule ma question.
A l'aide d'un bouton et une macro je veut choisir un item dans une
colonne
comme critère (avec boite et une fenêtre déroulante).
la base de référence est dans la feuille2 a2:L13000.
la colonne k de la feuille2 (est une liste de date d'environ 200
date
différentes).
Avec le filtre élaborer et ce critère, copier le tout dans un
autre endroit
.
Les résulta devrais donner de 1 a 6 lignes avec une date
sélectionner.
Je reformule ma question.
A l'aide d'un bouton et une macro je veut choisir un item dans une
colonne
comme critère (avec boite et une fenêtre déroulante).
la base de référence est dans la feuille2 a2:L13000.
la colonne k de la feuille2 (est une liste de date d'environ 200
date
différentes).
Avec le filtre élaborer et ce critère, copier le tout dans un
autre endroit
.
Les résulta devrais donner de 1 a 6 lignes avec une date
sélectionner.
Je reformule ma question.
A l'aide d'un bouton et une macro je veut choisir un item dans une
colonne
comme critère (avec boite et une fenêtre déroulante).
la base de référence est dans la feuille2 a2:L13000.
la colonne k de la feuille2 (est une liste de date d'environ 200
date
différentes).
Avec le filtre élaborer et ce critère, copier le tout dans un
autre endroit
.
Les résulta devrais donner de 1 a 6 lignes avec une date
sélectionner.
Bonjour,
Daniel Pelletier :
Je reformule ma question.
A l'aide d'un bouton et une macro je veut choisir un item dans une
colonnecomme critère (avec boite et une fenêtre déroulante).
la base de référence est dans la feuille2 a2:L13000.
la colonne k de la feuille2 (est une liste de date d'environ 200
datedifférentes).
Avec le filtre élaborer et ce critère, copier le tout dans un
autre endroit.
Les résulta devrais donner de 1 a 6 lignes avec une date
sélectionner.
Je suppose que vous voulez vos résultats sur la feuille nommée
feuil1, sinon modifiez partout feuil1 par le nom de la feuille où
doit apparaitre votre extraction.
J'utilise d'abord pour créer votre liste la feuille3. Cette liste
commencera en cellule A4. Menu Insertion > Nom > Définir :
Nom dans le classeur : col_triee
Fait référence à : þuil3!A4:A400
Pour la taille de cette plage, j'ai retenu environ 200 dates, à la
louche.
La macro suivante, va permettre d'initialiser la liste des dates à
chaque ouverture du classeur. Dans outils > macro, sélectionnez
Visual Basic Editor.
Placer au niveau du projet :
VBAProject (votreclasseur)
Microsofot Excel Objets
ThisWorkbook
Doublecliquez sur thisworkbook
Si vous ne voyez pas l'explorateur de projet en haut à gauche,
appuyez sur CTRL + R.
Dans la fenêtre de droite, menu de gauche, vérifiez que workbook
soit délectionné et dans la liste de droite, sélectionnez open
Collez la macro suivant dans la fenêtre :
----------------------------------------------------------------
Private Sub Workbook_Open()
' creer_date Macro
' Macro enregistrée le 12/04/2004 par Christine Nocquet
'
Sheets("Feuil3").Select
Columns("C:C").Select
Selection.Clear
Columns("A:A").Select
Selection.Clear
Range("A1").Select
ActiveCell.FormulaR1C1 = "date"
Sheets("Feuil2").Select
Columns("K:K").Select
Selection.Copy
Sheets("Feuil3").Select
Range("C1").Select
ActiveSheet.Paste
Columns("C:C").Select
Selection.Sort Key1:=Range("C2"), Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:úlse, _
Orientation:=xlTopToBottom
Sheets("Feuil3").Columns("C:C").AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range("Feuil3!A1:A2"), _
CopyToRange:=Range("Feuil3!A3:A3"), Unique:=True
Sheets("Feuil1").Select
End Sub
----------------------------------------------------------------
Remarque sur ces deux lignes :
Range("A1").Select
ActiveCell.FormulaR1C1 = "date"
Le contenu de A1 est date ou le nom exact de la colonne Feuille2!K:K
Réouvrez votre classeur pour constater que le résultat est OK. En
feuille3, à partir de la cellule A4, vous devez avoir une extraction
de votre liste de date. Attention, si vous utilisez déjà une feuille
appelée feuil3, renommer partout feuil3, modifiez ce nom partout où
je l'utilise.
Revenez maintenant à votre classeur, feuille1, pour créer en A2
votre liste déroulante de dates à sélectionner.
En A1 ecrire : date (ou le nom exact de la colonne Feuille2!K:K)
Mettez vous sur la case A2. Mettez cette cellule au format date que
vous souhaitez, puis sélectionnez menu Donnees > validation
Dans l'onglet options de la fenêtre validation des données, dans la
barre autoriser, selectionner liste.
Dans la barre Source, tapez la formule :
ÞCALER(col_triee;0;0;NBVAL(col_triee)).
La formule mise dans source permet de supprimer les cellules vides
en fin de liste.
Tester maintenant votre liste. Si vous voyez apparaitre date en
première ligne, c'est que excel a déplcer votre plage lors de
l'exécution de la macro d'initialisation. Si cela vous gène,
remettez la bonne sélection. Maintenant que cette plage est utilisée
ici, excel ne la modifiera plus. Testez votre liste en supprimant et
ajoutant des données, cela doit marcher.
Passons maintenant à votre extraction : c'est la partie la plus
simple.
Dans outils > macro, sélectionnez Visual Basic Editor.
Placer au niveau du projet :
VBAProject (votreclasseur)
Clic droit sur le nom de votre classeur, barre insertion,
sélectionnez module
Sélectionnez maintenant module, module1 et coller dans la fenêtre de
droite la macro ci dessous :
----------------------------------------------------------------
Sub liste()
'
' liste Macro
' Macro enregistrée le 11/04/2004 par Christine Nocquet
'
Sheets("Feuil2").Range("A:L").AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range("Feuil1!A1:A2"), _
CopyToRange:=Range("Feuil1!A6:L6"), Unique:úlse
Sheets("Feuil1").Select
End Sub
----------------------------------------------------------------
Vous allez maintenant associer un bouton à votre macro.
Menu affichage, barre d'outils, sélectionnez formaulaires.
Dans la barre formulaire, cliquez sur le symbole du bouton.
Placez la souris là ou vous voulez coller ce bouton et dessinez-le
avec le + comme vous dessineriez un rectanble dans mspaint.
Dans la fenêtre "affecter une macro",
dans Nom de la macro, choisissez liste,
Dans Macros dans, choisissez Ce classeur
puis ok.
Ammenez la souris sur le bouton, cliquez dessus un première fois
pour le renommer, par exemple liste. Si vous loupez ce renommage ou
si vous voulez le changer, clic droit sur le bouton et modifier le
texte.
Vous pouvez maintenant utiliser ce bouton.
Attention, dans la ligne :
CopyToRange:=Range("Feuil1!A6:L6"), Unique:úlse
N'oubliez pas de changer False en True si vous voulez sélectionner
sans doublon. Dans ce cas, votre liste devra être triée sur la date.
Comme vous le voyez, mes macro ont tout simplement été réalisées à
l'enregistreur de macro. J'ai simplement déplacé la macro creer_date
dans thisworbook, évènement open, et modifié les sélections que
excel avait pu réduire comme column("c:c") dans la ligne :
Sheets("Feuil3").Columns("C:C").AdvancedFilter
ou rajouter les évènements faciles à oublier lors de
l'enregistrement comme :
Sheets("Feuilx").Select
en début ou en fin de macro.
Voilà, j'espère que cela correspond à ce que vous attendez.
Attention, normalement je pense avoir réglé mes lignes de macro
suffisamment court pour que le copier-coller ne pose pas de
problème.
Sinon, vous remarquerez qu'une ligne de macro est coninuée par la
suivante lorsqu'elle se finit pae " _".
--
chrisn
mettre le bon fai, libertysurf pour me répondre
Bonjour,
Daniel Pelletier :
Je reformule ma question.
A l'aide d'un bouton et une macro je veut choisir un item dans une
colonne
comme critère (avec boite et une fenêtre déroulante).
la base de référence est dans la feuille2 a2:L13000.
la colonne k de la feuille2 (est une liste de date d'environ 200
date
différentes).
Avec le filtre élaborer et ce critère, copier le tout dans un
autre endroit
.
Les résulta devrais donner de 1 a 6 lignes avec une date
sélectionner.
Je suppose que vous voulez vos résultats sur la feuille nommée
feuil1, sinon modifiez partout feuil1 par le nom de la feuille où
doit apparaitre votre extraction.
J'utilise d'abord pour créer votre liste la feuille3. Cette liste
commencera en cellule A4. Menu Insertion > Nom > Définir :
Nom dans le classeur : col_triee
Fait référence à : þuil3!A4:A400
Pour la taille de cette plage, j'ai retenu environ 200 dates, à la
louche.
La macro suivante, va permettre d'initialiser la liste des dates à
chaque ouverture du classeur. Dans outils > macro, sélectionnez
Visual Basic Editor.
Placer au niveau du projet :
VBAProject (votreclasseur)
Microsofot Excel Objets
ThisWorkbook
Doublecliquez sur thisworkbook
Si vous ne voyez pas l'explorateur de projet en haut à gauche,
appuyez sur CTRL + R.
Dans la fenêtre de droite, menu de gauche, vérifiez que workbook
soit délectionné et dans la liste de droite, sélectionnez open
Collez la macro suivant dans la fenêtre :
----------------------------------------------------------------
Private Sub Workbook_Open()
' creer_date Macro
' Macro enregistrée le 12/04/2004 par Christine Nocquet
'
Sheets("Feuil3").Select
Columns("C:C").Select
Selection.Clear
Columns("A:A").Select
Selection.Clear
Range("A1").Select
ActiveCell.FormulaR1C1 = "date"
Sheets("Feuil2").Select
Columns("K:K").Select
Selection.Copy
Sheets("Feuil3").Select
Range("C1").Select
ActiveSheet.Paste
Columns("C:C").Select
Selection.Sort Key1:=Range("C2"), Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:úlse, _
Orientation:=xlTopToBottom
Sheets("Feuil3").Columns("C:C").AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range("Feuil3!A1:A2"), _
CopyToRange:=Range("Feuil3!A3:A3"), Unique:=True
Sheets("Feuil1").Select
End Sub
----------------------------------------------------------------
Remarque sur ces deux lignes :
Range("A1").Select
ActiveCell.FormulaR1C1 = "date"
Le contenu de A1 est date ou le nom exact de la colonne Feuille2!K:K
Réouvrez votre classeur pour constater que le résultat est OK. En
feuille3, à partir de la cellule A4, vous devez avoir une extraction
de votre liste de date. Attention, si vous utilisez déjà une feuille
appelée feuil3, renommer partout feuil3, modifiez ce nom partout où
je l'utilise.
Revenez maintenant à votre classeur, feuille1, pour créer en A2
votre liste déroulante de dates à sélectionner.
En A1 ecrire : date (ou le nom exact de la colonne Feuille2!K:K)
Mettez vous sur la case A2. Mettez cette cellule au format date que
vous souhaitez, puis sélectionnez menu Donnees > validation
Dans l'onglet options de la fenêtre validation des données, dans la
barre autoriser, selectionner liste.
Dans la barre Source, tapez la formule :
ÞCALER(col_triee;0;0;NBVAL(col_triee)).
La formule mise dans source permet de supprimer les cellules vides
en fin de liste.
Tester maintenant votre liste. Si vous voyez apparaitre date en
première ligne, c'est que excel a déplcer votre plage lors de
l'exécution de la macro d'initialisation. Si cela vous gène,
remettez la bonne sélection. Maintenant que cette plage est utilisée
ici, excel ne la modifiera plus. Testez votre liste en supprimant et
ajoutant des données, cela doit marcher.
Passons maintenant à votre extraction : c'est la partie la plus
simple.
Dans outils > macro, sélectionnez Visual Basic Editor.
Placer au niveau du projet :
VBAProject (votreclasseur)
Clic droit sur le nom de votre classeur, barre insertion,
sélectionnez module
Sélectionnez maintenant module, module1 et coller dans la fenêtre de
droite la macro ci dessous :
----------------------------------------------------------------
Sub liste()
'
' liste Macro
' Macro enregistrée le 11/04/2004 par Christine Nocquet
'
Sheets("Feuil2").Range("A:L").AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range("Feuil1!A1:A2"), _
CopyToRange:=Range("Feuil1!A6:L6"), Unique:úlse
Sheets("Feuil1").Select
End Sub
----------------------------------------------------------------
Vous allez maintenant associer un bouton à votre macro.
Menu affichage, barre d'outils, sélectionnez formaulaires.
Dans la barre formulaire, cliquez sur le symbole du bouton.
Placez la souris là ou vous voulez coller ce bouton et dessinez-le
avec le + comme vous dessineriez un rectanble dans mspaint.
Dans la fenêtre "affecter une macro",
dans Nom de la macro, choisissez liste,
Dans Macros dans, choisissez Ce classeur
puis ok.
Ammenez la souris sur le bouton, cliquez dessus un première fois
pour le renommer, par exemple liste. Si vous loupez ce renommage ou
si vous voulez le changer, clic droit sur le bouton et modifier le
texte.
Vous pouvez maintenant utiliser ce bouton.
Attention, dans la ligne :
CopyToRange:=Range("Feuil1!A6:L6"), Unique:úlse
N'oubliez pas de changer False en True si vous voulez sélectionner
sans doublon. Dans ce cas, votre liste devra être triée sur la date.
Comme vous le voyez, mes macro ont tout simplement été réalisées à
l'enregistreur de macro. J'ai simplement déplacé la macro creer_date
dans thisworbook, évènement open, et modifié les sélections que
excel avait pu réduire comme column("c:c") dans la ligne :
Sheets("Feuil3").Columns("C:C").AdvancedFilter
ou rajouter les évènements faciles à oublier lors de
l'enregistrement comme :
Sheets("Feuilx").Select
en début ou en fin de macro.
Voilà, j'espère que cela correspond à ce que vous attendez.
Attention, normalement je pense avoir réglé mes lignes de macro
suffisamment court pour que le copier-coller ne pose pas de
problème.
Sinon, vous remarquerez qu'une ligne de macro est coninuée par la
suivante lorsqu'elle se finit pae " _".
--
chrisn
mettre le bon fai, libertysurf pour me répondre
Bonjour,
Daniel Pelletier :
Je reformule ma question.
A l'aide d'un bouton et une macro je veut choisir un item dans une
colonnecomme critère (avec boite et une fenêtre déroulante).
la base de référence est dans la feuille2 a2:L13000.
la colonne k de la feuille2 (est une liste de date d'environ 200
datedifférentes).
Avec le filtre élaborer et ce critère, copier le tout dans un
autre endroit.
Les résulta devrais donner de 1 a 6 lignes avec une date
sélectionner.
Je suppose que vous voulez vos résultats sur la feuille nommée
feuil1, sinon modifiez partout feuil1 par le nom de la feuille où
doit apparaitre votre extraction.
J'utilise d'abord pour créer votre liste la feuille3. Cette liste
commencera en cellule A4. Menu Insertion > Nom > Définir :
Nom dans le classeur : col_triee
Fait référence à : þuil3!A4:A400
Pour la taille de cette plage, j'ai retenu environ 200 dates, à la
louche.
La macro suivante, va permettre d'initialiser la liste des dates à
chaque ouverture du classeur. Dans outils > macro, sélectionnez
Visual Basic Editor.
Placer au niveau du projet :
VBAProject (votreclasseur)
Microsofot Excel Objets
ThisWorkbook
Doublecliquez sur thisworkbook
Si vous ne voyez pas l'explorateur de projet en haut à gauche,
appuyez sur CTRL + R.
Dans la fenêtre de droite, menu de gauche, vérifiez que workbook
soit délectionné et dans la liste de droite, sélectionnez open
Collez la macro suivant dans la fenêtre :
----------------------------------------------------------------
Private Sub Workbook_Open()
' creer_date Macro
' Macro enregistrée le 12/04/2004 par Christine Nocquet
'
Sheets("Feuil3").Select
Columns("C:C").Select
Selection.Clear
Columns("A:A").Select
Selection.Clear
Range("A1").Select
ActiveCell.FormulaR1C1 = "date"
Sheets("Feuil2").Select
Columns("K:K").Select
Selection.Copy
Sheets("Feuil3").Select
Range("C1").Select
ActiveSheet.Paste
Columns("C:C").Select
Selection.Sort Key1:=Range("C2"), Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:úlse, _
Orientation:=xlTopToBottom
Sheets("Feuil3").Columns("C:C").AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range("Feuil3!A1:A2"), _
CopyToRange:=Range("Feuil3!A3:A3"), Unique:=True
Sheets("Feuil1").Select
End Sub
----------------------------------------------------------------
Remarque sur ces deux lignes :
Range("A1").Select
ActiveCell.FormulaR1C1 = "date"
Le contenu de A1 est date ou le nom exact de la colonne Feuille2!K:K
Réouvrez votre classeur pour constater que le résultat est OK. En
feuille3, à partir de la cellule A4, vous devez avoir une extraction
de votre liste de date. Attention, si vous utilisez déjà une feuille
appelée feuil3, renommer partout feuil3, modifiez ce nom partout où
je l'utilise.
Revenez maintenant à votre classeur, feuille1, pour créer en A2
votre liste déroulante de dates à sélectionner.
En A1 ecrire : date (ou le nom exact de la colonne Feuille2!K:K)
Mettez vous sur la case A2. Mettez cette cellule au format date que
vous souhaitez, puis sélectionnez menu Donnees > validation
Dans l'onglet options de la fenêtre validation des données, dans la
barre autoriser, selectionner liste.
Dans la barre Source, tapez la formule :
ÞCALER(col_triee;0;0;NBVAL(col_triee)).
La formule mise dans source permet de supprimer les cellules vides
en fin de liste.
Tester maintenant votre liste. Si vous voyez apparaitre date en
première ligne, c'est que excel a déplcer votre plage lors de
l'exécution de la macro d'initialisation. Si cela vous gène,
remettez la bonne sélection. Maintenant que cette plage est utilisée
ici, excel ne la modifiera plus. Testez votre liste en supprimant et
ajoutant des données, cela doit marcher.
Passons maintenant à votre extraction : c'est la partie la plus
simple.
Dans outils > macro, sélectionnez Visual Basic Editor.
Placer au niveau du projet :
VBAProject (votreclasseur)
Clic droit sur le nom de votre classeur, barre insertion,
sélectionnez module
Sélectionnez maintenant module, module1 et coller dans la fenêtre de
droite la macro ci dessous :
----------------------------------------------------------------
Sub liste()
'
' liste Macro
' Macro enregistrée le 11/04/2004 par Christine Nocquet
'
Sheets("Feuil2").Range("A:L").AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range("Feuil1!A1:A2"), _
CopyToRange:=Range("Feuil1!A6:L6"), Unique:úlse
Sheets("Feuil1").Select
End Sub
----------------------------------------------------------------
Vous allez maintenant associer un bouton à votre macro.
Menu affichage, barre d'outils, sélectionnez formaulaires.
Dans la barre formulaire, cliquez sur le symbole du bouton.
Placez la souris là ou vous voulez coller ce bouton et dessinez-le
avec le + comme vous dessineriez un rectanble dans mspaint.
Dans la fenêtre "affecter une macro",
dans Nom de la macro, choisissez liste,
Dans Macros dans, choisissez Ce classeur
puis ok.
Ammenez la souris sur le bouton, cliquez dessus un première fois
pour le renommer, par exemple liste. Si vous loupez ce renommage ou
si vous voulez le changer, clic droit sur le bouton et modifier le
texte.
Vous pouvez maintenant utiliser ce bouton.
Attention, dans la ligne :
CopyToRange:=Range("Feuil1!A6:L6"), Unique:úlse
N'oubliez pas de changer False en True si vous voulez sélectionner
sans doublon. Dans ce cas, votre liste devra être triée sur la date.
Comme vous le voyez, mes macro ont tout simplement été réalisées à
l'enregistreur de macro. J'ai simplement déplacé la macro creer_date
dans thisworbook, évènement open, et modifié les sélections que
excel avait pu réduire comme column("c:c") dans la ligne :
Sheets("Feuil3").Columns("C:C").AdvancedFilter
ou rajouter les évènements faciles à oublier lors de
l'enregistrement comme :
Sheets("Feuilx").Select
en début ou en fin de macro.
Voilà, j'espère que cela correspond à ce que vous attendez.
Attention, normalement je pense avoir réglé mes lignes de macro
suffisamment court pour que le copier-coller ne pose pas de
problème.
Sinon, vous remarquerez qu'une ligne de macro est coninuée par la
suivante lorsqu'elle se finit pae " _".
--
chrisn
mettre le bon fai, libertysurf pour me répondre