Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1556 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujet(s) à lire :
    - macro excel pour récupérer cellules
 

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1697933
Gaetanoz
Posté le 06-03-2008 à 08:34:35  profilanswer
 

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
mood
Publicité
Posté le 06-03-2008 à 08:34:35  profilanswer
 

n°1697994
kiki29
Posté le 06-03-2008 à 10:04:52  profilanswer
 

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

n°1698313
Gaetanoz
Posté le 06-03-2008 à 15:26:12  profilanswer
 

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.

n°1698404
kiki29
Posté le 06-03-2008 à 17:06:36  profilanswer
 

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
n°1699243
Gaetanoz
Posté le 08-03-2008 à 12:19:09  profilanswer
 

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!

n°1699265
kiki29
Posté le 08-03-2008 à 13:59:52  profilanswer
 

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
n°1699363
kiki29
Posté le 08-03-2008 à 19:47:32  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
imprimer un onglet excel depuis access[Résolu] file_exists et erreurs 404 serveur.
[Résolu][Oracle 10g] Quels paramètres pour EXP ?Insertion de ligne automatique excel...
CREER UN CATPRODUCT A PARTIR D'UNE NOMENCLATURE EXCEL[Résolu] Import de données brutes Excel avec ADO.net
[RESOLU] aide pour une requête toute simple[résolu] Problème sur formulaire, enregistrement dans BD
Changer une application VBA pour un autre language de programmation 
Plus de sujets relatifs à : [Resolu] Excel VBA Regrouper des valeurs depuis des classeurs/feuilles


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR