Dispatcher

Y compris Power BI, Power Query et toute autre question en lien avec Excel
g
globalhygiene
Jeune membre
Jeune membre
Messages : 12
Inscrit le : 10 avril 2020
Version d'Excel : 2010 FR

Message par globalhygiene » 10 avril 2020, 10:24

Bonjour, j'ai recuperer une macro pour dispatcher des lignes identiques sur une feuille et les regrouper par nom de la colonne a sur des feuilles nommé par le texte en a , au début cela fonctionnait ,et la ca bloque sur la 2 ligne de la macro,je ne suis pas un expert en la matière qq peut il m'aider
voici le code que j'utilise

Sub dispatch()
Columns("C:C").Select
ActiveWorkbook.Worksheets("DATA").AutoFilter.Sort.SortFields.Clear <-- 'c'est ici que ca bloque'
ActiveWorkbook.Worksheets("DATA").AutoFilter.Sort.SortFields.Add Key:= _
Range("C1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("DATA").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Dim CptLig As Integer
Dim Feuille As Worksheet

For CptLig = 3 To Feuil1.Range("A65536").End(xlUp).Row
Set Feuille = Nothing

If Not FeuilleExiste(Feuil1.Range("A" & CptLig).Value) Then
Set Feuille = Sheets.Add(After:=Worksheets(Worksheets.Count))
Feuille.Name = Feuil1.Range("A" & CptLig).Value
Feuil1.Rows("1:2").Copy Destination:=Feuille.Rows("1:2")
End If
If Feuille Is Nothing Then Set Feuille = Sheets(Feuil1.Range("A" & CptLig).Value)
Feuil1.Rows(CptLig).Copy Destination:=Feuille.Range("A" & Feuille.Range("A65536").End(xlUp).Row + 1)
Next CptLig
Feuil1.Activate
End Sub

Merci de votre aide
Avatar du membre
BrunoM45
Modérateur
Modérateur
Messages : 3'450
Appréciations reçues : 142
Inscrit le : 29 octobre 2011
Version d'Excel : 2016 FR, O365 FR
Contact :

Message par BrunoM45 » 10 avril 2020, 10:32

Bonjour,

:joindre:
[F1] est une touche qui appelle l'aide : Essayez, c'est assez performant et on trouve plein de choses

Il n'y a ni bon ni mauvais usage de la liberté d'expression, il n'en existe qu'un usage insuffisant.
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 15'011
Appréciations reçues : 889
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 10 avril 2020, 10:33

Bonjour et :bv:

Prends connaissance de viewtopic.php?f=2&t=13 et notamment du $6
Et utilise la balise </> pour rendre ton code lisible.

Pour ton sujet, tu peux aussi voir ici : https://www.excel-pratique.com/fr/telec ... xcel-no466

edit : Bonjour Bruno
2 membres du forum aiment ce message.

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
g
globalhygiene
Jeune membre
Jeune membre
Messages : 12
Inscrit le : 10 avril 2020
Version d'Excel : 2010 FR

Message par globalhygiene » 10 avril 2020, 10:37

bonjour ci joint le fichier en question
cordialement
DATA.xlsm
(118.65 Kio) Téléchargé 8 fois
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 15'011
Appréciations reçues : 889
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 10 avril 2020, 10:48

Quel est l'intérêt d dispatcher par onglet ?

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Avatar du membre
BrunoM45
Modérateur
Modérateur
Messages : 3'450
Appréciations reçues : 142
Inscrit le : 29 octobre 2011
Version d'Excel : 2016 FR, O365 FR
Contact :

Message par BrunoM45 » 10 avril 2020, 10:50

Re,

Moi en tout cas, j'y vois une grosse anomalie :??
Trier uniquement la colonne "C" ou est-ce que je me trompe ::o
[F1] est une touche qui appelle l'aide : Essayez, c'est assez performant et on trouve plein de choses

Il n'y a ni bon ni mauvais usage de la liberté d'expression, il n'en existe qu'un usage insuffisant.
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 15'011
Appréciations reçues : 889
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 10 avril 2020, 11:03

Pour l'aspect dispatch
Option Explicit
Option Base 1

Sub dispatcher()
Dim Tbl As Variant, data As Variant, i%
Dim dico1 As Object, cle1 As Variant, result1 As Variant, prov1 As String, sw As Worksheet
Dim critere%

'###### à ajutser #######
critere = 1 ' num colonne

    Application.DisplayAlerts = False
    For Each sw In Worksheets
        If sw.Name <> "data" Then sw.Delete
    Next
    Application.DisplayAlerts = True
    
    data = ActiveSheet.Range("A3:K" & ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row)

    Set dico1 = CreateObject("Scripting.Dictionary")
    For i = LBound(data) + 1 To UBound(data) ' hors en-tête
        dico1(data(i, critere)) = ""
    Next
    
    prov1 = data(1, critere)
    For Each cle1 In dico1.Keys
        Sheets.Add(After:=Sheets(Sheets.Count)).Name = cle1
        data(1, critere) = cle1 ' pour emmener aussi l'en-tête dans le filtre
        result1 = filtreArray(data, critere, cle1)
        Cells(3, 1).Resize(UBound(result1, 1), UBound(result1, 2)) = result1
        Cells(3, 1).Offset(0, critere - 1) = prov1
    Next
    
    Sheets("data").Select
    MsgBox "Terminé !"
    
End Sub
Function filtreArray(Tbl, col, param)
Dim i%, j%, k%, n%
    For i = 1 To UBound(Tbl)
        If Tbl(i, col) = param Then n = n + 1
    Next i
    Dim temp: ReDim temp(1 To n, 1 To UBound(Tbl, 2))
    
    j = 0
    For i = 1 To UBound(Tbl)
        If Tbl(i, col) = param Then
            j = j + 1
            For k = 1 To UBound(Tbl, 2)
                temp(j, k) = Tbl(i, k)
            Next k
        End If
    Next i
    filtreArray = temp
    
End Function
Il reste à recopier les lignes d'en-tête et les autres fonctions ...
DATA.xlsm
(104.67 Kio) Téléchargé 1 fois

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Avatar du membre
BrunoM45
Modérateur
Modérateur
Messages : 3'450
Appréciations reçues : 142
Inscrit le : 29 octobre 2011
Version d'Excel : 2016 FR, O365 FR
Contact :

Message par BrunoM45 » 10 avril 2020, 11:11

Re,

Steelson tu es un "salaud" :lol:
Je pense que globalhygiene va avoir directe un mal au crâne avec ton code :yek: :clap:
[F1] est une touche qui appelle l'aide : Essayez, c'est assez performant et on trouve plein de choses

Il n'y a ni bon ni mauvais usage de la liberté d'expression, il n'en existe qu'un usage insuffisant.
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 15'011
Appréciations reçues : 889
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 10 avril 2020, 11:13

BrunoM45 a écrit :
10 avril 2020, 11:11
Re,

Steelson tu es un "salaud" :lol:
Je pense que globalhygiene va avoir directe un mal au crâne avec ton code :yek: :clap:
ok, j'aurais dû repartir de son code ... bon je vais voir cela ! mais comme tu disais, cela commençait mal !

edit : le problème est que je ne trouve pas dans son code l'instruction pour éclater le fichier en plusieurs onglets !
Modifié en dernier par Steelson le 10 avril 2020, 11:16, modifié 1 fois.

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Avatar du membre
BrunoM45
Modérateur
Modérateur
Messages : 3'450
Appréciations reçues : 142
Inscrit le : 29 octobre 2011
Version d'Excel : 2016 FR, O365 FR
Contact :

Message par BrunoM45 » 10 avril 2020, 11:15

Re,

Non non, pas forcément repartir de son code, mais éviter tout ce qui est tableau (certes beaucoup plus rapide)

Le travail dans les tableaux sont vraiment à faire entre "pros" ;;)
[F1] est une touche qui appelle l'aide : Essayez, c'est assez performant et on trouve plein de choses

Il n'y a ni bon ni mauvais usage de la liberté d'expression, il n'en existe qu'un usage insuffisant.
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message