IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Regroupement de fichier Excel [XL-2003]


Sujet :

Macros et VBA Excel

  1. #21
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Ouskel'n'or
    ta donné le code pour supprimer une feuille vierge
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if worksheets("feuil3").usedrange.address = "$A$1" and worksheets("feuil3").range("$a$1") = "" then Msgbox "La feuille est vide !"
    (légèrement modifié pour te simplifier les choses)
    remplace la mesage box par la suppression de la feuille
    je te donne pour boucler sur toutes les feuille du classeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Dim ws As Worksheet
    For Each ws In Worksheets
    MsgBox ws.Name & chr(13) & "La première cellule contient " & ws.range("A1")
    Next ws
    Remplace le message box par le code de ouskel'n'or en utilisant ws pour désigner la feuille

  2. #22
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    J'ai fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub Copie(CL2 As Workbook)
    Dim LaFeuille As Worksheet, derlig As Long, WS As Worksheet
    For Each LaFeuille In CL2.Worksheets
     LaFeuille.Copy After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
                DoEvents
                If Err <> 0 Then
                    msg = msg & "Classeur " & NomFich & " feuille " & LaFeuile.Name & vbCrLf
                    On Error GoTo 0
            End If
        Next LaFeuille
     
    For Each WS In Worksheets
    If Worksheets(WS).UsedRange.Address = "$A$1" And Worksheets(WS).Range("$a$1") = "" Then Sheets(WS).Delete
     Next WS
     
    End Sub
    Sa marche pas (peut être j'ai mal fait)
    Sa me surligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Worksheets(WS).UsedRange.Address = "$A$1" And Worksheets(WS).Range("$a$1") = "" Then
    en jaune

    Il me semble pourtant avoir bien fait

    .

  3. #23
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu déclares bien Ws as worksheet ?
    Oui !
    Donc Ws correspond dans ta boucle à l'objet worksheet du classeur actif. Tel que c'est écrit !
    Donc, si tu mets Worksheets(Ws) c'est comme si tu mettais "Worksheets(Worksheets(in workbook))" Et ça, ça marche pas !
    D'où ma question : Pourquoi t'arranges-tu toujours pour changer ce qui fonctionne dans le code qu'on te propose ?
    Mets donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ws.UsedRange.Address = ...
    c'est très suffisant !

  4. #24
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Et pourtant j'avais exprès édité mon message pour te mettre l'exemple
    Dit toi que quand tu tape
    les " signifie que c'est une chaine de caractère ws n'est pas une chaine de caractère, ws est la feuille

  5. #25
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Ok c'est cool sa a l'air de marcher

    A force on y est arrivé

    Il suffisait juste de m'expliquer

    En tout cas merci

    Si j'ai un problème je reviens vous voir




    Je vous met quand même le code que j'ai au final (sa peu aider)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Public msg As String
     Sub Appel() 'A ADAPTER
    Dim Chemin As String
        Application.ScreenUpdating = False
            Chemin = Recherche.TextBox1.Text
            Ouvrir Chemin
                Application.ScreenUpdating = True
        If msg <> "" Then _
        MsgBox "Pour des raisons de protection ou autres, n'ont pu être copiées " & vbCrLf & msg
    End Sub
    Sub Ouvrir(Chemin As String)
    Dim NomFich As String
    Dim CL2 As Workbook 'fichier copié
        Application.DisplayAlerts = False 'Evite les messages d'Excel
        'Evite l'exécution éventuelle de macros liées aux fichiers ouverts
        Application.EnableEvents = False
            NomFich = Dir(Chemin & "*.xls")
            If NomFich = "" Then
                 MsgBox "Aucun fichier trouvé dans " & Chemin
                 Exit Sub
            End If
            Do While NomFich <> ""
                Set CL2 = Workbooks.Open(Chemin & NomFich)
                DoEvents
                Copie CL2
                CL2.Close False
                DoEvents
                ThisWorkbook.Save 'enregistrement du classeur après chaque copie
                DoEvents
                NomFich = Dir
            Loop
        Application.EnableEvents = True
        Application.DisplayAlerts = True
    End Sub
    Sub Copie(CL2 As Workbook)
    Dim LaFeuille As Worksheet, derlig As Long, WS As Worksheet
    For Each LaFeuille In CL2.Worksheets
     LaFeuille.Copy After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
                DoEvents
                If Err <> 0 Then
                    msg = msg & "Classeur " & NomFich & " feuille " & LaFeuile.Name & vbCrLf
                    On Error GoTo 0
            End If
        Next LaFeuille
    For Each WS In Worksheets
    If WS.UsedRange.Address = "$A$1" And WS.Range("$a$1") = "" Then WS.Delete
    Next WS
    End Sub
    Il y a peut-être plus simple mais sa a l'air de bien marcher

  6. #26
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Citation Envoyé par FCL31
    Si j'ai un problème je reviens vous voir

    Ça va pas, non ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [XL-2010] Regroupement des fichiers excel selon un critère de nom
    Par nidale dans le forum Excel
    Réponses: 8
    Dernier message: 04/03/2015, 15h53
  2. [XL-2003] Regrouper des fichiers Excel en un seul
    Par piercleo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/11/2010, 14h28
  3. Réponses: 4
    Dernier message: 26/11/2009, 12h00
  4. Réponses: 4
    Dernier message: 21/10/2009, 17h00
  5. regrouper plusieurs fichiers Excel en un seul
    Par jnmab dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/11/2007, 17h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo