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 :

Macro avec nom de feuille évolutif [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 7
    Par défaut Macro avec nom de feuille évolutif
    Bonjour,

    j'ai adapté une macro pour fusionner les feuilles de différents fichier dans une seule feuille d'un nouveau fichier.
    J'ai ensuite intégré quelques macro de mise en forme. et pour finir je renomme ma feuille nouvellement crée et j'obtiens ma compilation... Je suis content.

    Le hic c'est qu'en renommant ma feuille lorsque je réouvre mon fichier la macro ne retrouve plus ma feuil1 puisque le nom n'est plus le même donc ça bug...

    Savez-vous comment je dois procéder pour que cela fonctionne indépendamment du nom de la feuille?

    Merci à vous

    Ci-dessous le scritp, sans les macro de mise en forme...


    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    Private Sub Workbook_Open()
    Dim chemin As String    ' classeur regroupé
    Dim rep As String       ' répertoire à traiter
    Dim fic As String       ' classeur regroupé
    Dim ligne As Long       ' ligne écriture
    Dim nbc As Integer      ' nombre de classeurs
    Dim nbf As Integer      ' nombre de feuilles
    Dim nbl As Integer      ' nombre de lignes
    Dim mxc As Long         ' maximum colones feuille
    Dim c As Integer        ' nombre de colonnes
    Dim l As Long           ' ligne lecture
    Dim Wf As Worksheet     ' feuille regroupement
    Dim Wl As Worksheet     ' feuille regroupée
     
     
    'rep = ThisWorkbook.Path & "\"
    rep = "\\Adresse\de\ répertoire réseau\"
     
     
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.DisplayAlerts = False
    On Error GoTo fin
    mxc = Cells(1, ActiveSheet.UsedRange.Columns.Count).End(xlToRight).Column
    Set Wf = ThisWorkbook.Sheets("Feuil1") 'variable feuille groupe
     
    'Wf.Cells.ClearContents 'Effacer la feuille précédente
    nbc = 0: nbf = 0            ' initialisation variables
    ligne = 3 'débuter le collage à la ligne 3
    fic = Dir(rep & "Plan d'actions*.xlsm")    ' recherche fichiers
    While fic <> ""
        chemin = rep & fic       ' chemin fichiers
            Workbooks.Open chemin, 0  ' ouverture
            Set Wl = ActiveWorkbook.Sheets("Plan d'actions")
            nbl = Wl.UsedRange.Rows.Count
            c = Wl.UsedRange.Columns.Count
            If ligne > 2 Then l = 2 Else l = 1  ' une seule fois le titre
            Wl.Cells(5, 1).Resize(nbl, c).Copy Destination:=Wf.Cells(ligne, 1)
            ligne = ligne + nbl - l + 1
            nbf = nbf + 1
            ActiveWorkbook.Close SaveChanges:=False   ' Fermeture du classeur
            nbc = nbc + 1
        fic = Dir
    Wend
        For l = ligne To 4 Step -1
            If Wf.Cells(l, mxc).End(xlToLeft).Column = 1 _
                And Wf.Cells(l, 1).Value = "" Then
                Wf.Rows(l).Delete
                ligne = ligne - 1
            End If
        Next l
     
     
     'renommer la feuille d'extraction
    Sheets("Feuil1").Select
    Sheets("Feuil1").Name = Format(Now, "dd.m.yyyy")
     
    'Fin
    fin:
        MsgBox nbc & " classeurs regroupés avec " & nbf & " feuilles et " & ligne & " lignes"
        Application.ScreenUpdating = True
        Application.EnableEvents = True
        Application.DisplayAlerts = True
    End Sub

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    bonjour
    au plus simple mais pas forcement orthodoxe et si cette feuille est bien la 1ère du classeur voir la seule
    c'est sheets(1) a la place de sheets("feuill1")

    en plus si je me fie à ta demande tu as inversé wf et wl

    lequel des deux est le sheets qui reçoit ??????

    à mon avis il devrait y avoir plus simple beaucoup plus simple

    question : la feuille regroupée selon moi est celle qui reçoit les copies hors dans le code c'est le contraire ???

    les criteres de copie sont quoi?

    sinon il y a plus simple

    1 tu ouvres tour à tour les fichiers dont les données sont à récupérer
    2 tu crées un tableau exemple (tableau= range("a1:d10")avec les données de ce fichier
    3 tu détectes la dernière ligne dans la feuille de réception
    4 tu resize un range avec cette dernière ligne + le compte du tableau +1)
    5 cette plage =tableau

    voila
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 7
    Par défaut
    Le simple et peu orthodoxe fonctionne très bien.
    Je te remercie de ta réponse.

  4. #4
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 093
    Billets dans le blog
    20
    Par défaut
    Salut,
    Si j'ai bien compris tu veux ajouter toujours à la même feuille tes lignes provenant des autres classeurs, mais la renommer ?Alors quel est le but de ce renommage ?

    Attention à ta gestion d'erreurs toute erreur renvoi à fin :
    Ce serait mieux à mon send avec Workbooks.Open chemin, 0, 1 ' ouverture en lecture seule
    Have a nice day. Oliv'
    Votre réponse est peut être dans mon blog !
    https://www.developpez.net/forums/blogs/191381-oliv-/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Code unique avec nom de feuille en variable
    Par alexr05 dans le forum Excel
    Réponses: 5
    Dernier message: 26/04/2015, 18h03
  2. création d'une plage de données avec nom de feuille variable
    Par vesuve321 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 16/06/2014, 18h25
  3. Exécuter macro avec nom du fichier ouvert : prob de variable
    Par supernati27 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 19/05/2011, 13h43
  4. [XL-2003] Sauvegarde feuille par macro avec le nom de la feuille
    Par steph70 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/03/2011, 09h01
  5. [Toutes versions] formule vba avec nom de feuille variable
    Par leptitdave dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/08/2009, 11h30

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