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 :

Regrouper plusieurs Range sur des feuilles différentes en un seul [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Par défaut Regrouper plusieurs Range sur des feuilles différentes en un seul
    Bonjour à tous,

    Je mets en place une macro qui je pense peut être optimisée. Pour ceci, j'aimerai savoir comment je peux faire pour regrouper plusieurs range en un seul afin de renseigner directement une variable tableau.

    Actuellement je fais ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    j = 0 'variable clé
    Set WB_a = Workbook("Archives.xls")
    With WB_a.Worksheets("Liste T&F")
         DL_a = .Columns(1).Find("*", , , , xlByRows, xlPrevious).Row
         'Calcul de la dernière ligne
         Set RG_a = .Range(.Cells(3, 1), .Cells(DL_a, 1)) 'définit le range de la feuille
    End With
    montab() = RG_a.Value 'ajoute le range au tableau
     
    Set MyDico = CreateObject("Scripting.Dictionary")
    For i = LBound(montab, 1) To UBound(montab, 1)
            MyDico.Add j, Trim(CStr(montab(i, 1))) 'ajoute les données de montab au dico
            j = j + 1
    Next i
    ' refaire de même avec une autre feuille etc...

    J'ai 4 feuilles dont le range est identique autrement dis rien ne cahgne dans le code à part le nom de la feuille soit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With WB_a.Worksheets("Liste T&F")
    Le but est donc de renseigner directement mon dictionnaire avec toutes les données sans devoir recopier ce code 4 fois (car j'ai 4 feuilles différentes) juste en changeant le nom de la feuille


    Merci d'avance de votre aide

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    ce n'est pas directement ce que tu souhaites, mais voici une proposition

    l'ajout dans le dictionnaire est dans une procédure dédiée, qui attend un argument Variant représentant un tableau

    dans la procédure principale, une boucle sur chaque feuille crée le tableau qu'on adresse à la procédure d'ajout dans le dictionnaire

    Attention je n'ai pas testé, une coquille n'est pas à écarter
    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
    Dim MyDico As Object
     
    Sub Principale()
    Dim ListeFeuille()
    Dim MonTab()
    Dim j As Long
     
    Set MyDico = CreateObject("Scripting.Dictionary")
    ListeFeuille = Array("Feuil1", "Feuil2", "Feuil3")
     
    With Workbooks("Archives.xls")
        For j = LBound(ListeFeuille) To UBound(ListeFeuille)
            With .Worksheets(ListeFeuille(j))
                MonTab = .Cells(3, 1).Resize(.Rows.Count - 2, 1).Value
                AjoutDico (MonTab)
                Erase MonTab
            End With
        Next j
    End With
     
    End Sub
     
    Sub AjoutDico(Tableau As Variant)
    Dim i As Long
        With MyDico
            For i = LBound(Tableau, 1) To UBound(Tableau, 1)
                .Add .Count, Trim(CStr(Tableau(i, 1)))
            Next i
        End With
    End Sub

    Pour ta demande, si tu veux tout grouper dans un unique tableau, il va falloir créer un tableau dynamique où la dimension 1 représente les colonnes, et la dimension 2 représente les lignes (afin que tu puisses redimensionner au fur et à mesure).
    Et il faudra à chaque fois faire une boucle pour ajouter les lignes unes par une ... ou alors créer chaque tableau et les fusionner (encore une fois, par boucle qui parcours les lignes).
    Sans oublier les indices de repérage pour savoir où t'en est dans ton tableau agrégé

  3. #3
    Membre chevronné
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Par défaut
    Bonjour et merci à toi

    J'ai donc opter pour ta solution de passer par un array et boucler sur toutes les feuilles.

    merci beaucoup
    c'est parfait

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

Discussions similaires

  1. [XL-2003] Sélection multiple sur des feuilles différentes
    Par Sibuxian dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/06/2010, 09h43
  2. [XL-2003] Lier deux cellules sur des feuilles différentes
    Par Olivier.p dans le forum Excel
    Réponses: 6
    Dernier message: 21/07/2009, 14h03
  3. Réponses: 2
    Dernier message: 10/10/2008, 20h35
  4. réaliser une application sur des feuilles différentes
    Par jijie dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/11/2007, 13h05
  5. Comparaisons de tableaux sur des feuilles différentes
    Par Olanor dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/07/2007, 07h32

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