Amélioration Code + Récupérer Valeurs dans fichiers fermés

bonjour tout le monde,

je viens de m'inscrire sur ce site afin de vous remercier : Michel, Claude, et ma Tante Nad.

pour répondre à michel, mon maître de stage ne connaît rien de VBA, il me laisse carte blanche tant que j'arrive à un bon résultat. Les programmes que vous avez établis ensemble m'on été d'un énorme secour, et surtout incroyablement efficace. je vous remercie beaucoup et vous souhaite une bonne journée.

Bonjour Guillaume et bienvenue au club,

Bonjour Nad, Michel, forum,

Oubli sur ma dernière version !

En effet pour tester, j'ai créé un fichier bidon CMUMR1109 (Nov 2009),

et ce fichier n'apparaissait pas trié dans la liste

J'ai donc ajouté un tri sur cette nouvelle version

Bonne journée et bon stage

Amicalement

Claude.

43suivi-v7-2.zip (25.54 Ko)

Bonjour Claude, Michel, Titounet, le forum

Claude,

Pour le tri ce n'est pas bon quand il y a toute l'année 2009. Voilà ce que cela donne

capture

Avec l'enregistreur, la bonne macro est :

Sub Tri()

    ActiveWorkbook.Worksheets("ListeFichiers").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("ListeFichiers").Sort.SortFields.Add Key:=Range( _
        "B2:B100"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets("ListeFichiers").Sort
        .SetRange Range("A1:B100")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
capture2

Mais je ne sais pas la raccourcir.

Amicalement

Nad

Re bonjour tout le monde,

le code que ma tante nous a transmis concernant le bon ordre des dates ne fonctionne pas sur Excel 2000. Du coût ça reste en paguaille dans la feuille " liste fichier". Après, quand ce problème sera résolue, je me demandais s'il ne serai pas judicieux de combiner les idées de Claude et Michel...

C'est à dire que sur le dernier fichier que Claude a envoyé, on pourrai au lieu d'une liste déroulante, mettre en place le Userform de Michel qui permettait de générer une rétrospective ??

A voir, merci et bonne soirée.

Bonsoir à tous,

C'est toujours le "B..." avec les dates !

essaye avec:

Sub ListeRepertoire() 'lancée par Open
Dim Chemin$, FName$
Dim Texto$, chiffres$, annee$, mois$
        Application.ScreenUpdating = False
    '------- liste les fichiers
        Chemin = ThisWorkbook.Path
        FName = Dir(Chemin & "\" & "*.xls")
    With Sheets("ListeFichiers")
            .Range("a2:b200").ClearContents
        Do While Left(FName, 5) = "CMUMR"
            .Range("A65536").End(xlUp)(2) = FName
            Texto = .Range("A65536").End(xlUp)
            chiffres = Mid(Texto, 6, 4)
            annee = 2000 + Right(chiffres, 2)
            mois = Left(chiffres, 2)
            .Range("b65536").End(xlUp)(2) = mois & "/" & annee
            FName = Dir
        Loop
            .Range("a1:b200").Sort Key1:=.Range("b1"), Order1:=xlAscending, _
            Header:=xlYes, OrderCustom:=1, MatchCase:=False
            .Range("A65536").End(xlUp).Name = "TopF"
    End With
End Sub

Pour l'UserForm c'est jouable, mais je ne sais pas faire (grosse lacune)

Amicalement

Claude

Re

Bonsoir Claude

C'est toujours faux. Je pense qu'il faut intégrer DataOption:=xlSortTextAsNumbers puisque quand on le fait manuellement c'est l'option qu'il faut cocher pour le bon tri.

Par contre, quand je l'ajoute à ton code j'ai un bug.

capture

Je te joins mon fichier avec le code de l'enregistreur ; les dates se classent bien. Le problème, c'est que sous 2000 c'est pas bon.

21suivi-v9.zip (29.93 Ko)

Amicalement

Nad

re Nad,

Pas sur que ton tri soit bon,

si tu copie ta liste obtenue et que tu colle/spécial/valeur,

on obtient des textes et des numériques

As-tu essayé mon code complet

colonne B au format "Standard"

édit: et qu'obtiens-tu ?

edit2: Attention, j'avais modifié le code en amont du tri

Claude

8classeur-test.xlsx (284.10 Ko)

Re Claude

Effectivement, en passant la colonne B au format Standard c'est OK pour moi (elle était en texte).

Je demande à Guillaume de tester ton code demain sous 2000.

Merci

Amicalement

Nad

sans titre 10 copie

Bonjour

Guillaume a un problème sous 2000.

La liste des feuilles ne va pas au-delà du 14ème mois (tout 2009 + janvier et février 2010)

J'ai pris la main sur son ordi et j'ai pu constater que :

  • Tous les fichiers CMUMR sont bien dans le même répertoire
  • Ils sont tous bien nommés
  • La macro fonctionne (essai sur modification d'un CMUMR0210 passé en CMUMR0611 ==> OK)
  • Si on ajoute un mois (le 15ème), il n'est pas dans ListeFichiers!

J'ai fait je ne sais pas combien de tests, mais je ne trouve pas le pourquoi du comment.

Si vous avez une idée ...

Amicalement

Nad

P.S. Ce matin, j'ai sorti une nouvelle version du fichier avec un USERFORM. La voici :

Je lui fait tester mais vu que je n'ai pas touché au code ListeRepertoire(), je ne vois pas pourquoi celui-là fonctionnerait.

Bonjour Nad,

répondu sur l'autre fil "Mon 1er UserForm"

pour le coup que çà ne prend pas tous les fichiers, je crois avoir trouvé

remplace la boucle par celle-ci

        Do While FName <> ""
            If Left(FName, 5) = "CMUMR" Then
                .Range("A65536").End(xlUp)(2) = FName
                Texto = .Range("A65536").End(xlUp)
                chiffres = Mid(Texto, 6, 4)
                annee = 2000 + Right(chiffres, 2)
                mois = Left(chiffres, 2)
                .Range("b65536").End(xlUp)(2) = mois & "/" & annee
            End If
            FName = Dir
        Loop

çà devait sortir de la boucle au 1er fichier <> de "CMUMR"

à suivre

Claude

Merci Claude

Je lui fais tester.

Nad

bonjour,

c'est bon tout marche !! je dois présenter demain à mon chef ce que j'ai fais.

Je tenez à vous remercier pour tous vos conseils et votre aide précieuse.

MERCI Claude, Michel et ma tante Nad.

Amicalement, Guillaumefilleul

Rechercher des sujets similaires à "amelioration code recuperer valeurs fichiers fermes"