MACRO ET FILTRE AUTOMATIQUE

Fermé
ludo - 18 nov. 2008 à 10:50
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 - 18 nov. 2008 à 21:38
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
A voir également:

13 réponses

santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
18 nov. 2008 à 11:21
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.


0
Ok effectivement, c'est un peu confidentielle, je prépare une version modifié et je l'envois,

merci
0
http://www.cijoint.fr/cjlink.php?file=cj200811/cijf2Hw013.xls


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
0
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
18 nov. 2008 à 11:56
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...

0
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
0
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
18 nov. 2008 à 12:44
ok je comprends. laisse moi un moment, je pense pouvoir t'aider cet aprem.

0
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
18 nov. 2008 à 13:54
T'es pret a travailler en simultane avec moi ?
moi sur le doc exemple, toi sur le vrai ou le faux, peu importe.

0
ok c est bon pour moi
0
C'est bon pour moi , les modifications ont été faites, je suis prèt pour la suite chef
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
18 nov. 2008 à 14:06
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.

0
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
18 nov. 2008 à 14:16
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
0
OK c'est bon pour moi
0
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
18 nov. 2008 à 14:33
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 :
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

0
OK c'est bon j'ai copié collé le code
0
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209 > ludo
18 nov. 2008 à 14:51
Regarde plus bas, j'ai fait des modifs.
0
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
18 nov. 2008 à 14:35
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




0
c'est bon le troisième code a étté rentré
0
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
18 nov. 2008 à 14:41
Aller, j'ai mieux encore :
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.

0
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
18 nov. 2008 à 14:59
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

0
Merci c'est vraiment sympa de ta part, tu me sauves , parceque je savais pas comment y arriver, je vais étudier tout le codage de près maintenant , pour bien comprendre.... merci vraiment
0
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
18 nov. 2008 à 15:13
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
0
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
18 nov. 2008 à 15:28
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)


0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 250
18 nov. 2008 à 20:22
Bonsoir,

une suggestion : en utilisant l'evenement double-clic ça pourrait alléger la préparation...
eric
0
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
18 nov. 2008 à 21:38
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
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.


0