MACRO ET FILTRE AUTOMATIQUE
ludo
-
santiago69 Messages postés 485 Statut Membre -
santiago69 Messages postés 485 Statut Membre -
Bonjour,
J'ai un tableau A1 : V 3212 , faisant appel à de nombreuses variables, pour émettre différentes hypothèses
prévisionnelles possible. Pour mener à bien ce choix , ce tableau est doté d'un filtre automatique.
L'opérateur choisit en fonction des contraintes quotidiennes , en agissant sur les variables et retenant le scénario qui lui conviens.
Mon problème : je voudrai renvoyer le scénario retenu parmis les 3212, sur un autre fichier pour faire un bilan ( les différents scénarios devant s'afficher les uns à la suite des autres) ; Si je retiens un scénario et que je construit ma macro à chaque fois en fonction du numéro de ligne retenu, ça n'a pas d'intéret. Comment faire pour que le scénario retenu par filtre soit renvoyé automatiquement et juste celui ci??
MERCI 0 TOUS
J'ai un tableau A1 : V 3212 , faisant appel à de nombreuses variables, pour émettre différentes hypothèses
prévisionnelles possible. Pour mener à bien ce choix , ce tableau est doté d'un filtre automatique.
L'opérateur choisit en fonction des contraintes quotidiennes , en agissant sur les variables et retenant le scénario qui lui conviens.
Mon problème : je voudrai renvoyer le scénario retenu parmis les 3212, sur un autre fichier pour faire un bilan ( les différents scénarios devant s'afficher les uns à la suite des autres) ; Si je retiens un scénario et que je construit ma macro à chaque fois en fonction du numéro de ligne retenu, ça n'a pas d'intéret. Comment faire pour que le scénario retenu par filtre soit renvoyé automatiquement et juste celui ci??
MERCI 0 TOUS
A voir également:
- MACRO ET FILTRE AUTOMATIQUE
- Photo filtre 7 gratuit - Télécharger - Retouche d'image
- Réponse automatique thunderbird - Guide
- Logiciel de sauvegarde automatique gratuit - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Recherche automatique des chaînes ne fonctionne pas - Guide
13 réponses
Il faudrait que tu nous en montre un peu plus sur le format du tableau.
S'il ne contient pas de donnees confidentielles, poste le ici.
Sinon, cree une copie avec des donnees fictives et poste le.
S'il ne contient pas de donnees confidentielles, poste le ici.
Sinon, cree une copie avec des donnees fictives et poste le.
Repete moi ta procedure. Mais en t'appuyant sur un example concret pour que je comprenne bien.
Prends un exemple de selection a faire, et quand tu bloque, explique moi quel bouton tu voudrais, quels lignes tu voudrais exporter etc...
Prends un exemple de selection a faire, et quand tu bloque, explique moi quel bouton tu voudrais, quels lignes tu voudrais exporter etc...
Exemple d'une selection :
AULNAY SOUS BOIS AUTOROUTE A 3 / ZI DE LA BARBIERE AZE 1 41 ivu 16
2 14 7,5 669 312 62,4 234 2621 2855 0,4058
donc je fait une selection à l'aide du filtre, qui va retenir qu'une seule ligne ,je voudrais pouvoir la transférer avec juste l'aide d'un bouton sur un autre fichier , qui va comptabiliser toutes les selections effectuer par les opérateurs ( qui sont encore moins à l'aise que moi avec l'outil excel) .
je voudrai pouvoir faire une autre selection par exemple en changeant l'adresse retenu, la transferer dans le fichier qui comptabilisera le bilan carbone des différentes activités effectués. Mais ne sais pas et arrive pas à transférer qu'une seule ligne retenu par le filtre en appuyant toujours sur le meme bouton.
Je sais pas si c'est trés clair ce que je te dit , mais je l'espère
AULNAY SOUS BOIS AUTOROUTE A 3 / ZI DE LA BARBIERE AZE 1 41 ivu 16
2 14 7,5 669 312 62,4 234 2621 2855 0,4058
donc je fait une selection à l'aide du filtre, qui va retenir qu'une seule ligne ,je voudrais pouvoir la transférer avec juste l'aide d'un bouton sur un autre fichier , qui va comptabiliser toutes les selections effectuer par les opérateurs ( qui sont encore moins à l'aise que moi avec l'outil excel) .
je voudrai pouvoir faire une autre selection par exemple en changeant l'adresse retenu, la transferer dans le fichier qui comptabilisera le bilan carbone des différentes activités effectués. Mais ne sais pas et arrive pas à transférer qu'une seule ligne retenu par le filtre en appuyant toujours sur le meme bouton.
Je sais pas si c'est trés clair ce que je te dit , mais je l'espère
T'es pret a travailler en simultane avec moi ?
moi sur le doc exemple, toi sur le vrai ou le faux, peu importe.
moi sur le doc exemple, toi sur le vrai ou le faux, peu importe.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
deroulement general : on va creer des liens hypertext dans toutes les cellules du tableau qui vont lancer une fonction qui copie la ligne sur laquelle on a clique.
1) desactiver la mise en forme des liens hypertextes (sinon tout le tableau sera bleu et souligne)
2) creer tous les liens en 1 clic
3) Creer la fonction qui va capturer chaque clic et l'interpreter en copiant la ligne sur laquelle il a ete effectue.
1.1) Menu Format, Style
Nom du style = Lien hypertexte
Tu decoche tout, tu clique sur ajouter
Nom du style = Lien hypertexte visite
Tu decoche tout, tu clique sur ajouter
Tu clic sur OK
T'inquiete, cette modification n'a cours que dans le classeur ouvert.
J'attend ton roger pour passer au point 2.
1) desactiver la mise en forme des liens hypertextes (sinon tout le tableau sera bleu et souligne)
2) creer tous les liens en 1 clic
3) Creer la fonction qui va capturer chaque clic et l'interpreter en copiant la ligne sur laquelle il a ete effectue.
1.1) Menu Format, Style
Nom du style = Lien hypertexte
Tu decoche tout, tu clique sur ajouter
Nom du style = Lien hypertexte visite
Tu decoche tout, tu clique sur ajouter
Tu clic sur OK
T'inquiete, cette modification n'a cours que dans le classeur ouvert.
J'attend ton roger pour passer au point 2.
2) Tu selectionne tout le tableau (normalement A13:Q3212)
Menu Insertion, Lien Hypertexte
Tu clique sur Emplacement dans ce document et tu laisse A1 dans Feuil1
Tu clique sur OK
Tu verifie maintenant que quel que soit l'endroit ou on clique dans le tableau, on se retrouve dans la cellule A1.
T'inquiete, ca va nous servir pour la suite...
J'attend pour passer a la suite
Menu Insertion, Lien Hypertexte
Tu clique sur Emplacement dans ce document et tu laisse A1 dans Feuil1
Tu clique sur OK
Tu verifie maintenant que quel que soit l'endroit ou on clique dans le tableau, on se retrouve dans la cellule A1.
T'inquiete, ca va nous servir pour la suite...
J'attend pour passer a la suite
3) Tu vas dans l'editeur Visual Basic (Alt+F11)
Tu vas dans l'explorateur de projet (Ctrl+R)
Tu double clique sur VBAProject (tondoc.xls) / Microsoft Excel Objects / ThisWorkbook
Normalement y'a une feuille blanche qui apparait avec eventuelement :
Tu efface tout et tu remplace par :
Je t'expliquerais ce que ca veut dire plus tard.
Tu me dis quand c'est bon
Tu vas dans l'explorateur de projet (Ctrl+R)
Tu double clique sur VBAProject (tondoc.xls) / Microsoft Excel Objects / ThisWorkbook
Normalement y'a une feuille blanche qui apparait avec eventuelement :
Option Explicit
Tu efface tout et tu remplace par :
Dim CurRow1 As Long, CurRow2 As Long
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
CurRow2 = CurRow1
CurRow1 = Target.Row
End Sub
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
Dim i As Long
Cells(CurRow2, 1).Select
Do: i = i + 1: Loop Until IsEmpty(Feuil2.Cells(i, 1))
For j = 1 To 17
Feuil2.Cells(i, j) = Cells(CurRow1, j + 1)
Next
End Sub
Je t'expliquerais ce que ca veut dire plus tard.
Tu me dis quand c'est bon
STOP ! Y'a une erreur de syntaxe
Dim CurRow1 As Long, CurRow2 As Long
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
CurRow2 = CurRow1
CurRow1 = Target.Row
End Sub
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
Dim i As Long
Cells(CurRow2, 1).Select
Do: i = i + 1: Loop Until IsEmpty(Feuil2.Cells(i, 1))
For j = 1 To 17
Feuil2.Cells(i, j) = Cells(CurRow1, j)
Next
End Sub
Aller, j'ai mieux encore :
J'attend que tu confirme que tu as bien applique la 3e version.
Dim CurCell1 As Range, CurCell2 As Range
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Set CurCell2 = CurCell1
Set CurCell1 = Target
End Sub
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
Dim i As Long
CurCell2.Select
Do: i = i + 1: Loop Until IsEmpty(Feuil2.Cells(i, 1))
For j = 1 To 17
Feuil2.Cells(i, j) = Cells(CurCell1.Row, j)
Next
End Sub
J'attend que tu confirme que tu as bien applique la 3e version.
Et maintenant sous vos yeux ebahis !
Roulement de tambour...
Va dans la Feuil1.
Fais 3 selections successives et clique sur chacune d'elle (il ne se passe rien a priori)
Va dans la Feuil2
Constate
Roulement de tambour...
Va dans la Feuil1.
Fais 3 selections successives et clique sur chacune d'elle (il ne se passe rien a priori)
Va dans la Feuil2
Constate
de nada.
ameliorations possibles :
- afficher un message apres avoir copier la ligne (sinon on a l'impression qu'il se passe rien et on recommence)
- je crois que ce que tu voulais c'etait enregistrer le clic vers un autre classeur (je suppose que tu saura adapter)
@+
Santiago
ameliorations possibles :
- afficher un message apres avoir copier la ligne (sinon on a l'impression qu'il se passe rien et on recommence)
- je crois que ce que tu voulais c'etait enregistrer le clic vers un autre classeur (je suppose que tu saura adapter)
@+
Santiago
Quelques pistes pour comprendre le code :
A chaque deplacement, on enregistre la position en cours
Parceque quand on clic sur une cellule, on saute vers A1 et on aimerais bien savoir ou on etait quand on a clique
Enchainement de operations :
- je clique sur CELLULE
- L'evenement SelectionChange se lance avec Target = CELLULE
- Le focus bouge vers A1 (la destination du lien hypertexte)
- L'evenement SelectionChange se lance avec Target = A1
- L'evenement FollowHyperlink se lance
Donc au moment ou je gere l'evenement FollowHyperlink, j'ai besoin de savoir ou j'etait 2 cellules avant. C'est pour ca que je memorise ma position dans 2 variables (CurCell1 et CurCell2)
D'abord je retourne en CurCell2 (ou j'etait 2 cran avant)
Mais a ce moment, l'evenement SelectionChange se lance a nouveau avec Target = CELLULE.
Donc quelques lignes plus loin, quand je veux copier la ligne en cours, je copie la ligne CurCell1.Row (et pas CurCell2 qui maintenant correspond a A1)
A chaque deplacement, on enregistre la position en cours
Parceque quand on clic sur une cellule, on saute vers A1 et on aimerais bien savoir ou on etait quand on a clique
Enchainement de operations :
- je clique sur CELLULE
- L'evenement SelectionChange se lance avec Target = CELLULE
- Le focus bouge vers A1 (la destination du lien hypertexte)
- L'evenement SelectionChange se lance avec Target = A1
- L'evenement FollowHyperlink se lance
Donc au moment ou je gere l'evenement FollowHyperlink, j'ai besoin de savoir ou j'etait 2 cellules avant. C'est pour ca que je memorise ma position dans 2 variables (CurCell1 et CurCell2)
D'abord je retourne en CurCell2 (ou j'etait 2 cran avant)
Mais a ce moment, l'evenement SelectionChange se lance a nouveau avec Target = CELLULE.
Donc quelques lignes plus loin, quand je veux copier la ligne en cours, je copie la ligne CurCell1.Row (et pas CurCell2 qui maintenant correspond a A1)
Effectivement, grace a eric, nous pouvons proposer une transformation tres simple.
1) Reprend ton document d'origine (avant toute transformation)
2) Ajoute ce code dans VBAProject (pbfiltreautomacro.xls) / Microsoft Excel Objects / ThisWorkbook
3) C'est tout ! Un double clic n'importe ou sur une ligne provoquera son ajout dans la Feuil2.
1) Reprend ton document d'origine (avant toute transformation)
2) Ajoute ce code dans VBAProject (pbfiltreautomacro.xls) / Microsoft Excel Objects / ThisWorkbook
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim i As Long
Cancel = True
Do: i = i + 1: Loop Until IsEmpty(Feuil2.Cells(i, 1))
For j = 1 To 17
Feuil2.Cells(i, j) = Cells(Target.Row, j)
Next
MsgBox "La sélection a bien été ajoutée.", vbInformation
End Sub
3) C'est tout ! Un double clic n'importe ou sur une ligne provoquera son ajout dans la Feuil2.
merci
voila le lien, je n'est pas mis le fichier vers lequel devrait etre transférer chaque trajet décidé , on peut imaginer que c'est sur une nouvelle feuille.
merci d'avance, moi je bloque vraiment