Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Copier/coller et regroupe selon une valeur

  • Initiateur de la discussion Initiateur de la discussion niwiz
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

N

niwiz

Guest
Bonjour,

Donc cela fait deja plusieurs heures que je me vois bloqué. en effet je souhait faire un recopier d'une plage dans une autres plages et en le restructurant differement.

Regrouper les noms groupes selon un groupe

groupe 1 : nom 1
groupe 1 : nom 2

resultat rechercher= >

groupe 1
_______
nom 1
nom 2

Pour etre plus clair, voici ci joint le fichier avec les detailles.

merci beaucoup de m'eclairer sur la marche à suivre pour y parvenir.

Cordialement pierre.
 

Pièces jointes

Re : Copier/coller et regroupe selon une valeur

Cette petite macro devrait faire l'affaire :

Code:
Sub Macro1()
    Dim y As Long
    Dim compteur1 As Long, compteur2 As Long, compteur3 As Long
    
    compteur1 = 6
    compteur2 = 6
    compteur3 = 6
    
    For y = 3 To Cells(Rows.Count, 1).End(xlUp).Row
        Select Case Cells(y, 1)
            Case "Groupe 1":
                compteur1 = compteur1 + 1
                Cells(compteur1, 6) = Cells(y, 2)
            Case "Groupe 2":
                compteur2 = compteur2 + 1
                Cells(compteur2, 7) = Cells(y, 2)
            Case "Groupe 3":
                compteur3 = compteur3 + 1
                Cells(compteur3, 8) = Cells(y, 2)
        End Select
    Next y
End Sub
 
Re : Copier/coller et regroupe selon une valeur

Merci Dormeur74 pour ta reponse qui est effectivement correct et qui m'aide bcp 🙂

Mais j'aimerais que cela soit dynamique. En effet il peut y avoir plus de groupe( groupe 4 , groupe 5 etc...). et il faudrais donc les ajouter à la suite (I7,I8,etc...).

merci d'avance

Merci
 
Re : Copier/coller et regroupe selon une valeur

Dernière petite question, comment faire pour que le Cells(Rows.Count, 1).End(xlUp).Row commence a A100 et aille jusqu'a A2?
qu 'il ne prenne en compte que la plage A2 a A100 ?

merci d'avance 🙂
 
Re : Copier/coller et regroupe selon une valeur

Juste une petite précision :
On ne peut pas faire un tri initial sur les colonnes A et B, car Nom 11 passera avant Nom 2 en classement alphanumérique. Mieux vaudrait formater la colonne B pour avoir Nom 02 au lieu de Nom 2.

Pour aller de 100 à 2 (dans le dur), tu peux toujours modifier la macro comme suit :
Code:
Option Explicit

Sub Macro2()
    Dim y As Long, x As Long
    Dim tableau() As String
    Dim compteurY As Long
    Dim compteurX As Long
    Dim colonne As Integer
    Dim nextLoc As Long
    
    ' On trie la feuille dans l'ordre croissant de la colonne A
    Cells.Select
    Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    
    ' on met dans le tableau tous les groupes trouvés
    For y = 100 To 2 Step -1
        If Cells(y, 1) <> "" Then
            If Cells(y, 1) <> Cells(y - 1, 1) Then
                compteurY = compteurY + 1
                ReDim Preserve tableau(compteurY)
                tableau(compteurY) = Cells(y, 1)
            End If
        End If
    Next y
    
    compteurX = 5
    For x = UBound(tableau) To 1 Step -1
        compteurX = compteurX + 1
        With Cells(6, compteurX)
        .Value = tableau(x)
        .Font.Size = 11
        .Font.Bold = True
        .HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter
        .Borders.Weight = xlThin
        End With
    Next x

    compteurX = UBound(tableau) + 1
    colonne = 5
    Do
        compteurX = compteurX - 1
        colonne = colonne + 1
        For y = 2 To 100
            If Cells(y, 1) = tableau(compteurX) Then
                nextLoc = Cells(Rows.Count, colonne).End(xlUp).Row + 1
                With Cells(nextLoc, colonne)
                .Value = Cells(y, 2)
                .Font.Size = 11
                .Font.Bold = False
                .HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter
                .Borders.Weight = xlThin
                End With
            End If
        Next y
    Loop Until compteurX = 1
    Cells(1, 1).Select
    
End Sub
 
Re : Copier/coller et regroupe selon une valeur

C'est encore moi !!

J'ai une nouvelle problématique. J'aimerai nommer chaque plage par le titre

ex :
F7:F16 names => F6
G7:G12 names => G6
etc ...

j'ai essayé quelque chose mais malheureusement probleme de synthaxe et/ou je ne le place pas au bonne endroits

Dsl de vous solliciter à nouveau et merci d'avance
 
Re : Copier/coller et regroupe selon une valeur

J'ai avancé mais je reste toujours bloqué sur la syntaxe !

Quelqu'un pour me débloquer sur la partie en gras ?

j'ai l'impression que le delete ne fonctionne pas et que la syntaxe du names.Add est incorrect

Merci d'avance 🙂
 

Pièces jointes

Re : Copier/coller et regroupe selon une valeur

Apres moult recherche j'ai enfin trouver ^^

faut juste remplace ce qu'il y a apres le delete par
=> ActiveWorkbook.Worksheets("Feuil1").Range(Cells(7, compteurX + 5), Cells(100, compteurX + 5).End(xlUp)).Name = nomGrp

merci bcp dsl pour le dérangement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

S
Réponses
29
Affichages
2 K
StanislasC
S
R
Réponses
5
Affichages
819
ratsavong
R
V
Réponses
12
Affichages
2 K
Varona Rodriguez
V
V
Réponses
2
Affichages
974
VazyFrancko
V
A
Réponses
5
Affichages
3 K
AlanAxel
A
N
Réponses
7
Affichages
2 K
NicoFernandes
N
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…