Harmonisation VBA [Résolu]

Signaler
Messages postés
83
Date d'inscription
dimanche 1 février 2009
Statut
Membre
Dernière intervention
31 décembre 2020
-
 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

Messages postés
162
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
13 janvier 2021
30
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
Messages postés
162
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
13 janvier 2021
30
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
Messages postés
162
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
13 janvier 2021
30
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
Messages postés
162
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
13 janvier 2021
30
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
Messages postés
162
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
13 janvier 2021
30
Bonjour
Il suffit de demander...
Bon réveillon à toi aussi

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

A+ François
Messages postés
83
Date d'inscription
dimanche 1 février 2009
Statut
Membre
Dernière intervention
31 décembre 2020
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
Messages postés
83
Date d'inscription
dimanche 1 février 2009
Statut
Membre
Dernière intervention
31 décembre 2020
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
Messages postés
83
Date d'inscription
dimanche 1 février 2009
Statut
Membre
Dernière intervention
31 décembre 2020
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
Messages postés
83
Date d'inscription
dimanche 1 février 2009
Statut
Membre
Dernière intervention
31 décembre 2020
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
Messages postés
83
Date d'inscription
dimanche 1 février 2009
Statut
Membre
Dernière intervention
31 décembre 2020
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
Messages postés
162
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
13 janvier 2021
30 >
Messages postés
83
Date d'inscription
dimanche 1 février 2009
Statut
Membre
Dernière intervention
31 décembre 2020

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
Messages postés
83
Date d'inscription
dimanche 1 février 2009
Statut
Membre
Dernière intervention
31 décembre 2020
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
Messages postés
83
Date d'inscription
dimanche 1 février 2009
Statut
Membre
Dernière intervention
31 décembre 2020
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
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