Harmonisation VBA

Résolu
Bonsoir,

Dans ce tableau, j'ai besoin de regrouper les données du data 1 et 2 dans l'onglet (Données_Harmoniser) les données commence de la colonne A1 à X et de la cellule A1 à R.

Dans Data 2 la colonne réf. n'est pas renseigné inscrire (en attente).

Créer l'onglet (Toto, Tata) et, mettre en gris la colonne Réf et les cellules (titres).

https://www.cjoint.com/c/JLwrgUpZywr

Par avance, je vous remercie et vous souhaites de très bonnes fêtes de fin d'année.

Cordialement,

zizou

12 réponses

  1. Excellent mille merci, je renouvelle mes remerciements à toi, à toutes les personnes qui nous viennent en aide, nous donne de leurs temps ainsi qu'à CMM. Sois prudent et prends soins de toi franc38.

    Heureusement que vous êtes là, c'est génial quoi.

    Excellente fêtes de fin d'année.

    Cordialement,

    zizou
    0
    1. Bonjour franc38,

      Merci, Merci et Merci, tes formules m'ont beaucoup aidées à mettre en place le tableau.

      J'ai créé les onglets, comme tu l'as suggéré j'ai utilisé le filtre élaboré.

      Le fait que maintenant les données sont filtrées et classée en ordre dans chaque onglet, j'ai juste besoin l’insertion de 3 lignes à la fin de chaque Items voir fichier :

      https://www.cjoint.com/c/JLFgvAOfiUr

      Je te souhaite un très bon réveillon et encore merci.

      Cordialement,

      Zizou
      0
      1. Bonjour
        Dans ce cas je te propose un filtre avancé
        sur la feuille "Données_Harmoniser"
        Dans les cellule A2:X8 tu saisis tes critères (exemple: en F2 75001, f3:75002, f4:75003)
        tu clic sur la première ligne de la colonne qui a le plus de critère (ici f1)
        Un inputbox te demandes le nom de la feuille ou il faut mettre les données filtrées

        https://www.cjoint.com/c/JLEoiLrCChz

        A+ François
        1
        1. Bonsoir franc38,

          Merci pour ta formule, je l'ai essayé, le InputBox est trop lourd pour le fichier de base.
          En effet, j'ai plus d'une cinquantaine d'Items pour plus de vingt profil (> vingt onglet avec le profil).

          L'idéal serait une formule qui regroupe chaque Item l'un en dessous de l'autre et que ça supprime les données initiales de la feuille (exemple 1234).

          Encore un grand merci pour ton aide.

          Je te souhaite une excellente soirée.

          Cordialement,

          zizou
          0
          1. Bonsoir franc38,

            J'ai adapté ta formule et ça fonctionne bien, je te remercie.

            Dans ce même tableau, je souhaite classer par groupe soit du 75001 à 75004 ou regroupé 75005 et 75013.

            Les classer par groupe exemple : si colonne A 2020 = Toto (mettre le Toto en titre) voir fichier.

            https://www.cjoint.com/c/JLBptEGaIyr

            Encore merci franc38.

            Cordialement,

            zizou
            0
            1. Bonsoir,
              Comment faire pour que ça aille de A à X? (Voir fichier)
              https://www.cjoint.com/c/JLBvLR4nvHr
              Une formule générique, afin que je puisse utiliser dans le macro
              Merci beaucoup pour votre aide.
              Cordialement,
              zizou
              0
            2. @zizou026Bonjour
              ma solution....
              Sub Classement1234()
              ' Classement1234 Macro
              Dim rep As String, lig As Long
              Sheets("1234").Select
              ActiveSheet.Cells.AutoFilter
              Do While True
              rep = InputBox("Saisir le critére ")
              If rep = "" Then Exit Do
              lig = Range("A" & Rows.Count).End(xlUp).Row + 2
              ActiveSheet.Range("$A$1:$X$29").AutoFilter Field:=2, Criteria1:=rep
              Range("A1:X26").Copy Destination:=Range("A" & lig)
              ActiveSheet.Cells.AutoFilter
              Loop
              ActiveWorkbook.Save
              End Sub


              A+ François
              0
          2. Il suffit de modifier mamacro
            Sub mamacro()
            Dim i As Long, dl As Long, lig As Long, sh As Worksheet
            Set sh = Sheets("Données_Harmoniser")
            sh.Range("A2:S" & Rows.Count).ClearContents
            dl = Sheets("Data_1").Range("A" & Rows.Count).End(xlUp).Row
            Sheets("Data_1").Range("A1:S" & dl).Copy Destination:=sh.Range("A1")
            lig = dl + 1
            dl = Sheets("Data_2").Range("B" & Rows.Count).End(xlUp).Row
            For i = 2 To dl
            sh.Range("A" & lig) = "En attente"
            sh.Range("B" & lig) = Sheets("Data_2").Range("N" & i)
            sh.Range("C" & lig) = Sheets("Data_2").Range("M" & i)
            sh.Range("D" & lig) = Sheets("Data_2").Range("I" & i)
            sh.Range("E" & lig) = Sheets("Data_2").Range("D" & i)
            sh.Range("F" & lig) = Format(Sheets("Data_2").Range("B" & i), "00 000")
            lig = lig + 1
            Next
            Range("A1:S1").Interior.ColorIndex = 15
            Range("A1:A" & lig - 1).Interior.ColorIndex = 15
            End Sub


            A+ François
            1
            1. Bonjour franc38,

              Infiniment merci à toi pour ta proposition.

              Avec ce macro comment faire pour écrire en attente dans les cellules vides de la colonne A de l'onglet Données_Harmoniser? Et mettre en gris la ligne titre et la colonne A?

              Sub enattente()
              '
              ' enattente Macro
              '
                  ActiveWindow.SmallScroll Down:=12
                  Range("A35").Select
                  ActiveCell.FormulaR1C1 = "En attente"
                  Range("A35").Select
                  Selection.AutoFill Destination:=Range("A35:A67")
                  Range("A35:A67").Select
                  ActiveWindow.ScrollRow = 12
                  ActiveWindow.ScrollRow = 9
                  ActiveWindow.ScrollRow = 6
                  ActiveWindow.ScrollRow = 3
                  ActiveWindow.ScrollRow = 1
                  Range("A1:S1").Select
                  ActiveWindow.ScrollColumn = 12
                  ActiveWindow.ScrollColumn = 8
                  ActiveWindow.ScrollColumn = 1
                  Range("A1:S1,A2:A67").Select
                  Range("A2").Activate
                  With Selection.Interior
                      .Pattern = xlSolid
                      .PatternColorIndex = xlAutomatic
                      .ThemeColor = xlThemeColorDark1
                      .TintAndShade = -0.349986266670736
                      .PatternTintAndShade = 0
                  End With
                  Range("B5").Select
                  ActiveWorkbook.Save
              End Sub


              Cordialement,

              Zizou
              0
              1. Bonjour
                Sub mamacro()
                  Dim i As Long, dl As Long, lig As Long, sh As Worksheet
                  Set sh = Sheets("Données_Harmoniser")
                  sh.Range("A2:S" & Rows.Count).ClearContents
                  dl = Sheets("Data_1").Range("A" & Rows.Count).End(xlUp).Row
                  Sheets("Data_1").Range("A1:S" & dl).Copy Destination:=sh.Range("A1")
                  lig = dl + 1
                  dl = Sheets("Data_2").Range("B" & Rows.Count).End(xlUp).Row
                  For i = 2 To dl
                    sh.Range("B" & lig) = Sheets("Data_2").Range("N" & i)
                    sh.Range("C" & lig) = Sheets("Data_2").Range("M" & i)
                    sh.Range("D" & lig) = Sheets("Data_2").Range("I" & i)
                    lig = lig + 1
                  Next
                End Sub
                

                A+ François
                1
                1. Bonsoir franc38,
                  Je te souhaites de très bonnes fêtes de fin d'année.
                  Aurez-tu l'amabilité de me dire comment faire la formule que pour les données ailles de A2 à X?
                  Je vais faire un macro et pourrais l'inclure dans celui-ci.
                  Encore merci pour ton aide.
                  Cordialement,
                  zizou
                  0
                  1. Bonjour franc38,

                    Par avance, je te remercie de ton aide.

                    Oui, c'est des données sont identique, Data_2 doit être dans le même format que Data_1.

                    La ligne A1 comporte les titres (je copie les données dans A2), je souhaite que dans un premier temps que toutes les données (Data_1 & Data_2) soient regroupés dans l'onglet (Données_Harmoniser).

                    Et, que ça soit classé par titre (onglet Tata, Toto) j'ai une vingtaine de variante.

                    Cordialement,

                    Zizou
                    0
                    1. Bonjour
                      Je ne comprends pas ce que tu veux faire?
                      ce sont les même données qui sont sur la Data_1 et Data_2 présentées différemment sauf la référence qui n'ai pas sur Data_2...

                      Ensuite tu parles de A1 à R et de A1 à X?

                      Les données tu les veux sur Données_Harmoniser ou sur toto tata?
                      C'est quoi les cellules titre (la 1ere ligne)?

                      A+ François
                      1