Harmonisation VBA

Résolu/Fermé
zizou026 Messages postés 101 Date d'inscription dimanche 1 février 2009 Statut Membre Dernière intervention 20 novembre 2024 - Modifié le 22 déc. 2020 à 18:52
 zizou026 - 31 déc. 2020 à 08:30
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

franc38 Messages postés 197 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 27 février 2023 38
23 déc. 2020 à 07:11
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
franc38 Messages postés 197 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 27 février 2023 38
Modifié le 26 déc. 2020 à 09:09
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
franc38 Messages postés 197 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 27 février 2023 38
26 déc. 2020 à 10:20
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
franc38 Messages postés 197 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 27 février 2023 38
Modifié le 30 déc. 2020 à 15:11
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
franc38 Messages postés 197 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 27 février 2023 38
31 déc. 2020 à 07:46
Bonjour
Il suffit de demander...
Bon réveillon à toi aussi

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

A+ François
1
zizou026 Messages postés 101 Date d'inscription dimanche 1 février 2009 Statut Membre Dernière intervention 20 novembre 2024 1
23 déc. 2020 à 08:31
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
zizou026 Messages postés 101 Date d'inscription dimanche 1 février 2009 Statut Membre Dernière intervention 20 novembre 2024 1
25 déc. 2020 à 23:11
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
zizou026 Messages postés 101 Date d'inscription dimanche 1 février 2009 Statut Membre Dernière intervention 20 novembre 2024 1
Modifié le 26 déc. 2020 à 09:10
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
zizou026 Messages postés 101 Date d'inscription dimanche 1 février 2009 Statut Membre Dernière intervention 20 novembre 2024 1
27 déc. 2020 à 16:23
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
zizou026 Messages postés 101 Date d'inscription dimanche 1 février 2009 Statut Membre Dernière intervention 20 novembre 2024 1
27 déc. 2020 à 22:38
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
franc38 Messages postés 197 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 27 février 2023 38 > zizou026 Messages postés 101 Date d'inscription dimanche 1 février 2009 Statut Membre Dernière intervention 20 novembre 2024
28 déc. 2020 à 05:30
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
zizou026 Messages postés 101 Date d'inscription dimanche 1 février 2009 Statut Membre Dernière intervention 20 novembre 2024 1
29 déc. 2020 à 22:01
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
zizou026 Messages postés 101 Date d'inscription dimanche 1 février 2009 Statut Membre Dernière intervention 20 novembre 2024 1
31 déc. 2020 à 07:23
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
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