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 :

Comment je peux fusionner deux feuilles en excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2012
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 2
    Par défaut Comment je peux fusionner deux feuilles en excel
    J'aimerais fusionner les informations se trouvant sur plusieurs feuilles de mon classer Excel comme ça; merci bp:

    Ex:

    feuil1:
    NOM         POINT
    ARTHUR       8
    SYLVAIN      9
    JEROME       7
    feuil2:
    NOM       POINT
    NICOLAS    8
    JEROME     10
    RESULAT SOUHAITE :

    Feuil3:
    NOM       POINT
    ARTHUR     8
    NICOLAS    8
    SYLVAIN    9
    JEROME     17

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Voici une solution avec une copie feuille après feuille des noms et des points associés.
    Si le nom n’est pas présent dans la feuille 3, on le note avec les points associés.
    Dans le cas contraire, on ajoute simplement les points associés.
    En fin de traitement, on effectue un tri des données.
    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
    Option Explicit
    Sub test()
    Dim WsS As Worksheet, WsC As Worksheet
    Dim i As Long, LigneAjout As Long
    Dim C As Range
        Application.ScreenUpdating = False
        Set WsC = Worksheets("Feuil3")
        For Each WsS In Worksheets
            If WsS.Name <> "Feuil3" Then
                For i = 2 To WsS.Range("A" & Rows.Count).End(xlUp).Row
                    If Application.CountIf(WsC.Columns(1), WsS.Range("A" & i).Value) = 0 Then
                        LigneAjout = WsC.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Row
                        WsC.Range("A" & LigneAjout) = WsS.Range("A" & i).Value
                        WsC.Range("B" & LigneAjout) = WsS.Range("A" & i).Offset(0, 1).Value
                    Else
                        Set C = WsC.Columns(1).Find(WsS.Range("A" & i).Value, , xlValues, xlWhole)
                        If Not C Is Nothing Then
                            C.Offset(0, 1).Value = C.Offset(0, 1).Value + WsS.Range("A" & i).Offset(0, 1).Value
                        End If
                    End If
                Next i
            End If
        Next WsS
        With WsC.Sort
            .SortFields.Clear
            .SortFields.Add Key:=WsC.Range("B2:B" & WsC.Range("B" & Rows.Count).End(xlUp).Row), _
                SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            .SetRange WsC.Range("A1:B" & WsC.Range("A" & Rows.Count).End(xlUp).Row)
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End Sub
    Cordialement.
    Fichiers attachés Fichiers attachés

  3. #3
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut comment je peux fusionner deux feuilles en EXCEL
    Bonjour gFZT82,

    Je n'ai pas encore la compétence suffisante pour analyser ta solution mais prévoit-elle le cas où le Jérôme feuil1 n'est pas la même personne que son homologue feuil2.
    je pense que goldab a dû prévoir cette éventualité et donner un code à chaque individu.

    Cordialement.

  4. #4
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour nibledispo,

    Si Jérôme feuil1 n'est pas la même personne que son homologue feuil2, l'identifiant devra forcément être différent puisque la finalité c'est de balayer toutes les feuilles afin de cumuler les points de Jérôme.
    En clair, tu ne peut pas affecter le même identifiant à 2 personnes différentes : tu devras déclarer par exemple Jérôme1 et Jérôme2.

    Cordialement.

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonsoir,

    Une autre solution en utilisant un objet dictionary et sa clé unique


    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
    Option Explicit
     
    'A jouter la référence à microsoft Scripting Runtiome
     
    Sub FusionFeuilles()
        Dim sh1 As Worksheet
        Dim sh2 As Worksheet
        Dim sh3 As Worksheet
    Dim mDico As New Dictionary
     
    Set sh1 = ThisWorkbook.Sheets("Feuil1")
    Set sh2 = ThisWorkbook.Sheets("Feuil2")
    Set sh3 = ThisWorkbook.Sheets("Feuil3")
    Dim i As Integer
     
    'Lecture feuille
    i = 2 'Ligne 1 = Titre
    While sh1.Cells(i, 1) <> ""
      If Not mDico.Exists(sh1.Cells(i, 1).Text) Then
        'Cas ou n'existe pas créé l'enregistrement
        mDico.Add sh1.Cells(i, 1).Text, sh1.Cells(i, 2).text
       Else
        'Cas ou existe déjà Incrémente
        mDico(sh1.Cells(i, 1).Text) = mDico(sh1.Cells(i, 1).Text) + sh1.Cells(i, 2).Text
      End If
     i = i + 1 'Ligne suivante
    Wend
    i = 2 'Ligne 1 = Titre
    While sh2.Cells(i, 1) <> ""
      If Not mDico.Exists(sh2.Cells(i, 1).Text) Then
        'Cas ou n'existe pas créé l'enregistrement
        mDico.Add sh2.Cells(i, 1).Text, sh2.Cells(i, 2)
       Else
        'Cas ou existe déjà Incrémente
        mDico(sh2.Cells(i, 1).Text) = mDico(sh2.Cells(i, 1).Text) + sh2.Cells(i, 2).Text
      End If
     i = i + 1 'Ligne suivante
    Wend
     
     
     sh3.Cells(1, 1) = sh1.Cells(1, 1) 'Copy entête
     sh3.Cells(1, 2) = sh1.Cells(1, 2)
     For i = 0 To mDico.Count - 1
        sh3.Cells(i + 2, 1) = mDico.Keys(i) 'Récupére Nom
        sh3.Cells(i + 2, 2) = mDico.Items(i) 'Récupére nombre
     
     
     Next
     
     End Sub

Discussions similaires

  1. Réponses: 7
    Dernier message: 01/06/2015, 13h34
  2. Comment je peux fusionner deux feuilles en excel
    Par Sinakhine dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/12/2012, 10h22
  3. [Débutant] Comment peut-on fusionner deux installations
    Par Abdelweheb dans le forum C#
    Réponses: 0
    Dernier message: 29/05/2012, 17h04
  4. fusionner deux feuilles de deux classeurs différents
    Par ririrourou dans le forum Macros et VBA Excel
    Réponses: 30
    Dernier message: 29/04/2008, 18h11
  5. Export sur deux feuilles vers excell depuis access.
    Par schwinny dans le forum VBA Access
    Réponses: 3
    Dernier message: 25/03/2008, 17h27

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