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

Microsoft 365 RÉSOLU Multi ligne selon critère cellule

  • Initiateur de la discussion Initiateur de la discussion Bambi35
  • 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 !

Bambi35

XLDnaute Occasionnel
Bonjour à tous
je viens vers vous pour de l'aide.je cherche à pouvoir faire un code wba pour pourvoir duplique les lignes selon les plusieurs activités de l'adhérents (Colonne Z) avec les infos de la colonne A à Y
Exemple pour ABGU Marc avoir 2 ligne 1 pour l'Escalade et 1 pour le Badminton

Merci de votre aide
Cordialement
Bambi35
 

Pièces jointes

Bonsoir Chris
Merci pour ton retour
Je ne connais pas la fonction PowerQuery.
Avec ton fichier je ne sais pas comment tu as fait
je ne vois pas de code vba ni de macro !!!
J'aimerais que cela fonction aussi avec d'autre version d'EXCEL

Merci de ton aide

Bambi35
 
Bonsoir à tous,

Idem mais en VBA. le code est dans module1. Cliquer sur le bouton Hop!
VB:
Sub diviser()
Dim derlig&, t, j&, jsup&, i&, k&, m&, s
With Sheets("Adherents_F78019")
   If .FilterMode Then .ShowAllData
   derlig = .Cells(.Rows.Count, "b").End(xlUp).Row
   t = Application.Transpose(.Range("a1:z" & derlig).Value)
   jsup = UBound(t, 2)
   For j = 2 To jsup
      s = Split(t(26, j), "-")
      If UBound(s) - LBound(s) + 1 > 1 Then
         t(26, j) = Trim(s(0))
         For m = 1 To UBound(s)
            ReDim Preserve t(1 To UBound(t), 1 To UBound(t, 2) + 1)
            For k = 1 To 25: t(k, UBound(t, 2)) = t(k, j): Next
            t(26, UBound(t, 2)) = Trim(s(m))
         Next m
      End If
   Next j
   t = Application.Transpose(t)
   .Range("a1").Resize(UBound(t), UBound(t, 2)) = t
End With
End Sub
 

Pièces jointes

Bonsoir Bambi35, chris, mapomme,

Solution très voisine de celle de mapomme mais je poste quand même.

Voyez le fichier joint et cette macro dans le code de la feuille "Résultat" :
VB:
Private Sub Worksheet_Activate()
Dim tablo, resu(), i&, s, j%, n&, k%
tablo = Feuil1.[A1].CurrentRegion.Resize(, 26)
ReDim resu(1 To Rows.Count, 1 To 26)
For i = 2 To UBound(tablo)
    s = Split(tablo(i, 26), "-")
    For j = 0 To UBound(s)
        n = n + 1
        For k = 1 To 25: resu(n, k) = tablo(i, k): Next k
        resu(n, 26) = Trim(s(j))
Next j, i
'---restitution---
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [A2]
    If n Then .Resize(n, 26) = resu
    .Offset(n).Resize(Rows.Count - n - .Row + 1, 26).ClearContents 'RAZ en dessous
End With
End Sub
Elle se déclenche quand on active la feuille.

A+
 

Pièces jointes

Bonjour à @chris à tous,

Ayant un tout nouveau PC avec un tout nouveau Excel 365 et donc Power Query, j'ai fait ma première requête. Elle était sans doute très simple car j'ai réussi. C'était ma toute première fois. Maintenant, il va falloir approfondir. Je ferai sans doute appel à vous dans les prochaines semaines.
 
RE

Chic plus de fous, plus de riz lol...
 
RE
Bonsoir Chris
Merci pour ton retour
Je ne connais pas la fonction PowerQuery.
Avec ton fichier je ne sais pas comment tu as fait
je ne vois pas de code vba ni de macro !!!
J'aimerais que cela fonction aussi avec d'autre version d'EXCEL

RE

PowerQuery est intégré à Excel à partir de 2016 et en add on à partir de 2010 donc le choix des versions est large 😎

Cela se fait en quelques clics :
Mettre le tableau initial sous forme de tableau structuré (existe depuis 2003 donc 17ans), nommer le tableau Adherents plutôt que Tableau1

Ensuite depuis une cellule du tableau : Données, A partir d'un tableau : ce qui ouvre PowerQuery
Sélectionner la colonne activités suivies, clic droit, Fractionner la colonne, Par délimiteur, Personnalisé : taper un espace un - et un espace, Options avancées : cocher fractionner en lignes
Sortir par Fermer et Charger : le résultat se stocke dans un nouvel onglet

Si l'original change, Données, Actualiser Tout : rien d'autre à faire
Si c'est à faire une seule fois : rompre la liaison du tableau de résultats
 
Bonjour le forum,

Si l'on veut que les dates (textes) soient restituées sous forme de vraies dates (nombres) il faut les convertir, voyez ce fichier (2) :
VB:
Private Sub Worksheet_Activate()
Dim tablo, resu(), i&, s, j%, n&, k%
tablo = Feuil1.[A1].CurrentRegion.Resize(, 26)
ReDim resu(1 To Rows.Count, 1 To 26)
For i = 2 To UBound(tablo)
    s = Split(tablo(i, 26), "-")
    For j = 0 To UBound(s)
        n = n + 1
        For k = 1 To 25
            If IsDate(tablo(i, k)) Then resu(n, k) = CDate(tablo(i, k)) Else resu(n, k) = tablo(i, k) 'convertit les dates (textes) en vraies dates (nombres)
        Next k
        resu(n, 26) = Trim(s(j))
Next j, i
'---restitution---
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [A2]
    If n Then .Resize(n, 26) = resu
    .Offset(n).Resize(Rows.Count - n - .Row + 1, 26).ClearContents 'RAZ en dessous
End With
End Sub
Dans la feuille "Résultat" les colonnes D M T ont été mises au format Date.

A+
 

Pièces jointes

Bonjour à tous

Merci à vous pour votre réactivité
Super Job75 nickel
mapomme dans ton vba les dates changent quand je reclic sur hop
Chris merci pour tes explications pour PowerQuery je vais approfondir cette solution
Merci encore de votre aide cela va me faciliter la tache pour les inscriptions

@+++
Bambi35
 
Je reviens sur ce fil pour parler un peu de Power Query.

Ce qui me gêne dans cet outil c'est que c'est une usine à gaz.

Je comprends bien que Microsoft a voulu aider ceux qui ne savent pas programmer.

Mais mettre des critères et commandes dans tous les sens c'est vraiment laborieux.

Perso je préfère le VBA, je sais toujours ce que je fais très exactement.
 
- 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

Discussions similaires

Réponses
3
Affichages
773
Réponses
2
Affichages
518
Réponses
2
Affichages
479
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…