Harmonisation VBA

Résolu
zizou026 Messages postés 102 Statut Membre -  
 zizou026 -
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. franc38 Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   38
     
    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
  2. franc38 Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   38
     
    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
  3. franc38 Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   38
     
    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
  4. franc38 Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   38
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. zizou026 Messages postés 102 Statut Membre 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
  7. zizou026 Messages postés 102 Statut Membre 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
  8. zizou026 Messages postés 102 Statut Membre 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
  9. zizou026 Messages postés 102 Statut Membre 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. zizou026 Messages postés 102 Statut Membre 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
      1. franc38 Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   38 > zizou026 Messages postés 102 Statut Membre
         
        Bonjour
        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
  10. zizou026 Messages postés 102 Statut Membre 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
  11. zizou026 Messages postés 102 Statut Membre 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
  12. zizou026
     
    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