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 :

Compiler les données de 2 tableaux dans 1 autre selon conditions


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Femme Profil pro
    COMMUNICATION
    Inscrit en
    Juin 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : COMMUNICATION

    Informations forums :
    Inscription : Juin 2015
    Messages : 9
    Par défaut Compiler les données de 2 tableaux dans 1 autre selon conditions
    Bonjour,

    Voici mon problème.
    Je dois compiler les données de 2 tableaux excel se trouvant dans un même classeur mais sur deux onglet différents, dans un troisième tableau qui se trouve sur autre onglet dans le même classeur selon 2 conditions :
    -la couleur de la ligne
    -la colonne H dans laquelle se trouve les informations sur le type de paiement. Les différents types de paiement sont : des prélèvements, des télé-règlements, LCR, et chèques. Ils doivent être classées par ordre alphabétiques (1 chèques, 2 LCR, 3 Prélèvements, 4 télé règlements) et les chèques doivent être classés dans un ordre croissant par rapport à leur numéro.

    Je vous joins mes fichiers pour exemple.

    http://www.cjoint.com/c/EFenHCgK578

    Merci mille fois à tous pour votre collaboration.

    PS: dans ce classeur j'ai d'autres onglets mais qui ne sont pas à prendre en compte.

  2. #2
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Billets dans le blog
    17
    Par défaut allez courage
    Salut met nous plutot une partie de code , car sinon je pense que personne ne t'aidera :/
    Si tu veux je peux t'aider mais propose un bout de code car sinon il faut qu'on te le face entier .... c'est pas tres dure mais bon propose quelque chose

  3. #3
    Membre régulier
    Femme Profil pro
    COMMUNICATION
    Inscrit en
    Juin 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : COMMUNICATION

    Informations forums :
    Inscription : Juin 2015
    Messages : 9
    Par défaut
    Bonjour et merci de m'avoir répondu!

    Suite à ta requête, j'ai fait des recherches et essayé d'adapter le code trouvé à ma situation... Mais étant débutante, j'ai fait avec les moyens du bords...
    Pour la partie 1 de ce que je souhaite faire, c-a-d fusionner les données de 2 tableaux dans un troisième, je fais la procédure suivante... Seulement les colonnes F G I ne s'affichent pas comme je le souhaite... Et j'ai un souci si les cellules sont fusionnées. De plus dans ma formule, j'ai calibré sur 33 lignes, or dans la réalité, mes tableaux ont un nombre de lignes différent...

    Merci pour ton aide qui serait plus que salutaire! Pour la partie 2, qui est le classement je cherche et reviendrai vers toi. Merci d'avance

    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    Sub FUSION()
    Sheets("Paiements non débités(tableau3)").Select
    Application.ScreenUpdating = False
        Range("A2:I" & Range("A65535").End(xlUp).Row + 1).ClearContents
     
    For i = 1 To 3    ' le_nombre_exact_de_feuilles
    If Sheets(i).Name <> "Paiements non débités(tableau3)" Then
        Sheets(i).Select
        Range("A2:A" & Range("A33").End(xlUp).Row).Select
        Selection.Copy
        Sheets("Paiements non débités(tableau3)").Select
        Range("A" & Range("A33").End(xlUp).Row + 1).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
        Sheets(i).Select
        Range("B2:B" & Range("B33").End(xlUp).Row).Select
        Selection.Copy
        Sheets("Paiements non débités(tableau3)").Select
        Range("B" & Range("B33").End(xlUp).Row + 1).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
       Sheets(i).Select
        Range("C2:C" & Range("C33").End(xlUp).Row).Select
        Selection.Copy
        Sheets("Paiements non débités(tableau3)").Select
        Range("C" & Range("C33").End(xlUp).Row + 1).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
        Sheets(i).Select
        Range("D2:D" & Range("D33").End(xlUp).Row).Select
        Selection.Copy
        Sheets("Paiements non débités(tableau3)").Select
        Range("D" & Range("D33").End(xlUp).Row + 1).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
         Sheets(i).Select
        Range("E2:E" & Range("E33").End(xlUp).Row).Select
        Selection.Copy
        Sheets("Paiements non débités(tableau3)").Select
        Range("E" & Range("E33").End(xlUp).Row + 1).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
         Sheets(i).Select
        Range("F2:F" & Range("F33").End(xlUp).Row).Select
        Selection.Copy
        Sheets("Paiements non débités(tableau3)").Select
        Range("F" & Range("F33").End(xlUp).Row + 1).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
        Sheets(i).Select
        Range("G2:G" & Range("G33").End(xlUp).Row).Select
        Selection.Copy
        Sheets("Paiements non débités(tableau3)").Select
        Range("G" & Range("G33").End(xlUp).Row + 1).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
        Sheets(i).Select
        Range("H2:H" & Range("H33").End(xlUp).Row).Select
        Selection.Copy
        Sheets("Paiements non débités(tableau3)").Select
        Range("H" & Range("H33").End(xlUp).Row + 1).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
        Sheets(i).Select
        Range("I2:I" & Range("I33").End(xlUp).Row).Select
        Selection.Copy
        Sheets("Paiements non débités(tableau3)").Select
        Range("I" & Range("I33").End(xlUp).Row + 1).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
    End If
    Next i
    [C2].Select
    Application.ScreenUpdating = True
     
    End Sub

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    Avis qui n'engage que moi:
    1. vous pouvez traiter des données si elles sont structurées comme des données, sans fusion de cellules et autres joyeusetés .....
    2. Si c'est le cas, vous n'avez quasiment pas besoin de code et des fonctions classiques peuvent faire 90% - 99% du travail
    3. Traiter des données sur des critères de couleur me semblent plus que risqué .... il vaut mieux comprendre quels critères

    Si vous voulez travailler sur les données, je vous suggère trois règles simples:

    - Chaque colonne doit représenter une caractéristique
    - Chaque ligne représente un enregistrement
    - Aucune fusion de cellule: il faut répéter les champs

    Autrement, c'est des heures de travail et un résultat .... direct à la poubelle dès qu'il y a une modification. Juste un avis

  5. #5
    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,

    le fait d'avoir des cellules fusionnées t'oblige à coder une usine à gaz (je pense que tu fais ça quand un seul règlement recouvre plusieurs factures)


    on peut te proposer des solutions qui tiennent en peu de ligne de code, avec création complète de ton tableau3 (plus besoin de l'effacer de le recalibrer) ... mais il faut revoir les cellules fusionnées.


    Est-ce que ceci serait envisageable :

    - les cellules fusionnées de ton tableau de départ ne le sont pas : si un règlement concerne 4 factures (par exemple), tu aura 4 lignes avec le même fournisseur et le même règlement

    - la macro va importer dans un tableau 3, l'ensemble des lignes non vides de ton tableau 1 et 2
    - ensuite, on trie le tableau par banque (puisque la coloration des cellules provient de ça)
    - ensuite, on sous-trie par fournisseur
    - ensuite on sous-sous-trie par règlement

    - ici, on va restaurer ta fusion : on fusionne les plages de lignes qui concernent le même règlement, on obtient à nouveau ta cellule "Fournisseurs" et "Date du règlement" qui sont fusionnées

    - on ajoute la ligne des totaux en fin de processus


    EDIT : j'avais pas rafraichi le sujet avant de m'absenter, d'où le fait que je n'ai pas vu la réponse déjà apportée

  6. #6
    Membre régulier
    Femme Profil pro
    COMMUNICATION
    Inscrit en
    Juin 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : COMMUNICATION

    Informations forums :
    Inscription : Juin 2015
    Messages : 9
    Par défaut Ouf je me sens moins seule!
    Merci vinc_bilb et joe.levrai pour votre intérêt et pour vos indications. Je ne savais pas que c'était si dur pour les cellules fusionnées... Mea culpa.
    Joe ce que tu proposes me paraît parfait, pourrais tu m'aider pour le code s'il te plaît?

    Cordialement.

    Laetitia

  7. #7
    Membre régulier
    Femme Profil pro
    COMMUNICATION
    Inscrit en
    Juin 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : COMMUNICATION

    Informations forums :
    Inscription : Juin 2015
    Messages : 9
    Par défaut petit à petit
    Bon j'applique plutôt cette formule pour la fusion

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub recap()
        Dim sh As Worksheet
        For Each sh In Worksheets
            If sh.Name <> "Paiements non débités" Then
                sh.[A2].Resize(sh.[A65536].End(xlUp).Row - 1, 9).Copy Destination:=Worksheets("Paiements non débités").[A65536].End(xlUp).Offset(1, 0)
            End If
        Next sh
    End Sub
    Petits soucis : j'aimerais calibré la formule pour seulement mes 2 onglets F.G Juin et Fournisseurs Juin au lieu de For Each sh In Worksheets, car j'ai d'autres onglets à ne pas prendre en compte... Mais je n'y arrive pas. De plus, j'ai un souci pour la réactualisation de mon tableau final, car quand je relance ma formule après avoir ajouté des lignes dans mes premiers tableaux, le nouveau tableau ne s'affiche pas là où il faut...
    Merci pour votre collaboration...

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

Discussions similaires

  1. Récupérer les données de 2 tableaux dans une boucle
    Par poleta77 dans le forum Langage
    Réponses: 6
    Dernier message: 21/12/2009, 15h41
  2. [Excel] Extraire les données d'un excel dans un autre excel
    Par CrazySeb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/06/2008, 21h12
  3. Récupérer les données d'une liste dans une autre liste
    Par benoit knk dans le forum SharePoint
    Réponses: 2
    Dernier message: 23/05/2008, 16h10
  4. Réponses: 4
    Dernier message: 06/05/2008, 19h59
  5. Boucles pour récuperer les données d'un tableau dans un autre.
    Par arnold95 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/09/2007, 21h39

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