Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/10/2011, 11h15   #1
 
Inscription : septembre 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 7
Points : -5
Points : -5
Par défaut Regrouper les données de plusieurs feuilles dans une

Bonjour, actuellement j'utilise cette macro, elle a pour but de copier toutes les feuilles excel situées dans un répertoire, contenant plusieurs classeurs fermés et de les ajouter dans mon classeur ouvert.:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub test1()
    Dim Chemin As String, Fichier As String, Ligne As Long
    Dim Feuilles, Sh As Worksheet, Tabl
    Chemin = "C:\Documents and Settings\xxxx\Bureau\base excel\"
    Fichier = Dir(Chemin & "*.xls")
    Set Sh = Sheets.Add
    Do While Fichier <> ""
        ThisWorkbook.Names.Add "Plage", _
            RefersTo:="='" & Chemin & "[" & Fichier & "]DonnesU'!$A$1:$Z$100"
        With Sh
            .[A1:Z100] = "=Plage"
            .[A1:Z100].Copy
            .[A1:Z100].PasteSpecial xlPasteValues
            ' Tabl est un tableaureprésentant la zone A1:Z100 du classeur fermé en cours de traitement
            ' la première dimension représente le numéro de ligne
            ' et la seconde le numéro de colonne
            Tabl = .[A1:Z100]
            Cells.ClearContents
            Ligne = Ligne + 1
            Cells(Ligne, 1) = Tabl(2, 3) ' renseigne A1
            'etc.
        End With
        Fichier = Dir
    Loop
End Sub

J'aimerais savoir si c'était possible, au lieu à chaque fois que la macro créer une nouvelle feuille dans mon classeur ouvert pour afficher les résultats copier. Ba que tout simplement elle aligne ça sur une seul feuille en ajoutant une nouvelle ligne a chaque fois.

En clair peut être : quand elle copie toutes feuil1 de mes classeur fermé dans le répertoire, elle ajouter dans mon classeur ouvert Feuil1, feuil2,feuil3..... j'aimerais juste au lien de créer plein de feuille qu'il place directement les résultats sur une seul feuille les un à la suite de l'autre. Est ce que c'est possible ?? Svp
djinero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 18h21   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Bonjour
à tester
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Sub Test1()
Dim Chemin As String, Fichier As String, Plage As String
Dim NewLig As Long
Dim Sh As Worksheet
 
Application.ScreenUpdating = False
Chemin = "C:\Documents and Settings\xxxx\Bureau\base excel\"
'Chemin = "C:\Users\user\Desktop\base excel\"
Fichier = Dir(Chemin & "*.xls")
Set Sh = ThisWorkbook.Worksheets("Feuil1")                 'Feuille cible (à adapter le nom)
With Sh
    'Effacer toute la feuille cible au préalable
    .UsedRange.Clear
    Do While Fichier <> ""
        'Première ligne vide
        NewLig = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
        Plage = "'" & Chemin & "[" & Fichier & "]DonnesU'!A1"
        'Pour que les cellules vides ne se transforment pas en 0
        Plage = "=IF(" & Plage & "="""",""""," & Plage & ")"
        With .Range("A" & NewLig & ":Z" & NewLig + 99)
            .Formula = Plage
            .Value = .Value
        End With
        Fichier = Dir
    Loop
End With
Set Sh = Nothing
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 10h15   #3
 
Inscription : septembre 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 7
Points : -5
Points : -5
Par défaut re

Ne fonctionne pas créer correctement sur une seul page, mais les resultats ne s'ajoute pas une ligne au dessus de l'autre ça modifie toujours la même ligne.
djinero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 23h47   #4
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Bonsoir
La ligne 16 du code indique qu'on cherche la première cellule vide en colonne A
Code :
NewLig = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
Tu as toujours des données en colonne A? Sinon, modifie la colonne
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h12.


 
 
 
 
Partenaires

Hébergement Web