[Resolu] Excel VBA Regrouper des valeurs depuis des classeurs/feuilles

Excel VBA Regrouper des valeurs depuis des classeurs/feuilles [Resolu] - VB/VBA/VBS - Programmation

Marsh Posté le 06-03-2008 à 08:34:35    

Bonjour :hello: ,
 
J'essaye de créer une macro pour regrouper dans un nouveau classeur des données contenues dans des classeurs (représentant les mois) et des feuilles (les jours) différents. Chaque, on relève différents paramètres, et une nouvelle feuille (dans le classeur du mois correspondant) est créée. Je souhaiterai pourvoir extraire certaines valeurs (type cellule K7, M7, K11...). Par rapport à ce sujet, j'essaye donc d'écrire l'extraction par feuille, mais pour le moment sans succès. Un peu d'aide serait la bienvenue ;).


Message édité par Gaetanoz le 08-03-2008 à 15:03:21
Reply

Marsh Posté le 06-03-2008 à 08:34:35   

Reply

Marsh Posté le 06-03-2008 à 10:04:52    

Jour Bon, déjà avec ce genre de renseignements tu as peu de chance d'obtenir une réponse,l'exemple donné est suffisamment explicite pour être modifié , sinon http://cjoint.com/ pour joindre ton fichier qui importe les données ainsi que des échantillons des fichiers à importer

Reply

Marsh Posté le 06-03-2008 à 15:26:12    

Par rapport à ton exemple, je souhaite extraire des valeurs contenues dans des cellules contenues dans différents fichiers (jusque là, pas de différences). Cependant, chacun de mes fichiers contient autant de feuilles que de jours dans le mois.  
 
Je cherche donc à compléter ta macro en y ajoutant une boucle pour l'extraction de cellules non seulement par fichier mais également par feuilles. Sur la macro que tu as faite, les valeurs sont extraites sur la feuille 1 dans différents fichiers, dans mon cas, c'est pour la feuille 1-01, 1-02 jusqu'à 1-31 du classeur 200801, et ainsi de suite jusqu'à la feuille 12-30, 12-31 du classeur 200812. Les classeurs et les différentes feuilles sont créés au fur et à mesure, mais ça ne doit pas poser de problèmes. En fait, je n'arrive pas à faire compter le nombre de feuilles dans chaque fichier.

Reply

Marsh Posté le 06-03-2008 à 17:06:36    

Moyennant les modifs suivantes
 


Option Explicit
....
Const FichierRch As String = "######.xls"
....


 
dans Procedure btnImport_QuandClic


 
....
Dim sNomFeuille As String,sNomDossier As String
Dim Nb As Long,iMois As Integer, j As Integer
Dim NbJMois As Integer,iYear As Integer
Dim bLike As Boolean
....
    NumLigneFichier = 4: Nb = 4
     
    For i = 1 To NbFichiers
        NomFichier = ShImport.Range("A" & NumLigneFichier)
        bLike = UCase(NomFichier) Like UCase(FichierRch)
        If bLike Then
            iMois = CInt(Mid(NomFichier, 5, 2)): iYear = CInt(Left(NomFichier, 4))
            NbJMois = NbJoursDuMois(iMois, iYear)
            With ShImport
                For j = 1 To NbJMois
                    sNomFeuille = NomFeuilleRch(j, iMois)
                    sNomDossier = BackSlashDossier(ShImport.Range("B" & NumLigneFichier))
                    .Cells(Nb, 3) = ExtraireValeur(sNomDossier, NomFichier, sNomFeuille, "A1" )
                    Nb = Nb + 1
                Next j
            End With
            NumLigneFichier = NumLigneFichier + 1
        End If
        Application.StatusBar = i & " / " & NbFichiers
    Next i
 
    EffacerLignes_REF_Vides
.....


et l'ajout de 2 fonctions


Private Function NbJoursDuMois(ByVal M As Integer, ByVal Y As Integer) As Integer
    NbJoursDuMois = DateSerial(Y, M + 1, 1) - DateSerial(Y, M, 1)
End Function
 
Private Function NomFeuilleRch(ByVal D As Integer, ByVal M As Integer) As String
Dim s As String
    Select Case D
        Case Is < 10
            s = M & "-0" & D
        Case Else
            s = M & "-" & D
    End Select
    NomFeuilleRch = s
End Function


 
Bien sur cela est à adapter à ton contexte, ici lecture d'une seule cellule A1
et report de la valeur lue dans la Colonne C


Message édité par kiki29 le 08-03-2008 à 05:10:28
Reply

Marsh Posté le 08-03-2008 à 12:19:09    

Merci beaucoup pour ton aide, c'est vraiment sympa.
 
Le selectcase de la fonction nomfeuillerch ne sert pas, étant donné que si le jour est à un seul chiffre, il le considère déjà avec le 0 (du type 02).
 
Kénavo!

Reply

Marsh Posté le 08-03-2008 à 13:59:52    

Salut, cela m'étonne qq peu vu le passage de paramètres integer avec en sortie String,mais si tu l'as testé dans ton cas ok, car perso sur des échantillons bidons de fichiers cela ne fonctionne pas correctement.


Message édité par kiki29 le 08-03-2008 à 19:40:25
Reply

Marsh Posté le 08-03-2008 à 19:47:32    

Exemple 7zippé sur http://cjoint.com/?ditUHtc1uN
7zip dispo sur http://www.7-zip.org/fr/


Message édité par kiki29 le 08-03-2008 à 19:49:41
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed