Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

éclater tableau dans plusieurs onglets

6 réponses
Avatar
John
Bonsoir,

Je vous remercie par avance de votre aide.

J'ai une feuille contenant environ 7 à 10 000 lignes de données
extraites d'une base SQL
J'ai une colonne équipe qui me donne le code de l'agent (style
1AR,1D00,2B00,3000...) soit environ 25 codes differents.
De cette feuille je voudrais "eclater" toutes les données lignes
afférantes à ce meme code agent dans un onglet spécifique ou portant le
meme nom.

J'ai essayé avec les fonctions recherchev (qui ne fonctionne pas comme
je veux), en faisant un tableau croisé dynamique mais cela me demande
des manips...

Cela est-il possible sans faire du VB?

Vraiment merci à vous d'éclairer ma lanterne !
John

6 réponses

Avatar
michdenis
Bonjour,

| Cela est-il possible sans faire du VB?

Oui c'est possible en utilisant un filtre élaboré.
Cependant, tu vas devoir répéter 20 fois la même procédure
pour chacun de tes groupes.

Pour ce faire, tu définis une zone de critère ayant 2 cellules
Exemple :

En G1 l'étiquette de colonne où sont les codes "agent"
En G2 tu écris le code d'un premier agent

Tu crées la feuille que tu baptises au nom du premier agent

IMPORTANT : C'est à partir de la feuille (feuille active) que tu viens d'ajouter
que tu dois appeler la commande "Filtre élaboré". Il ne te
reste plus qu'à renseigner les différentes cases de la fenêtre du filtre élaboré.

Tu répètes ce processus pour tous les codes agents que tu as.
Avatar
John
michdenis a écrit :
Bonjour,

| Cela est-il possible sans faire du VB?

Oui c'est possible en utilisant un filtre élaboré.
Cependant, tu vas devoir répéter 20 fois la même procédure
pour chacun de tes groupes.

Pour ce faire, tu définis une zone de critère ayant 2 cellules
Exemple :

En G1 l'étiquette de colonne où sont les codes "agent"
En G2 tu écris le code d'un premier agent

Tu crées la feuille que tu baptises au nom du premier agent

IMPORTANT : C'est à partir de la feuille (feuille active) que tu viens d'ajouter
que tu dois appeler la commande "Filtre élaboré". Il ne te
reste plus qu'à renseigner les différentes cases de la fenêtre du filtre élaboré.

Tu répètes ce processus pour tous les codes agents que tu as.







Déjà un grand merci à toi MichDenis !

Je vais essayer...
Question, cela peut-il etre automatisé?
Je veux dire que je n'ai plus qu'à ecraser les données de la feuille
principale chaque semaine ?
Avatar
michdenis
Un fichier exemple ici : http://cjoint.com/?ebbGGRdHfO

Le contenu de la procédure :

'--------------------------------------------------------
Sub test()
Dim Arr(), Rg As Range, C As Range, A As Integer
Dim DerCol As Integer, DerLig As Long, Elt As Variant
Dim Sh As Worksheet, NomFeuille As String

Application.EnableEvents = False
Application.ScreenUpdating = False
NomFeuille = ActiveSheet.Name

With Worksheets("Sheet1") ' Nom à adapter
'adresse de la colonne où sont les agents -> à adapter
With .Range("B1:B" & .Range("B65536").End(xlUp).Row)
.AdvancedFilter xlFilterInPlace, , , True
For Each C In .Offset(1).Resize(.Rows.Count - 1). _
SpecialCells(xlCellTypeVisible)
A = A + 1
ReDim Preserve Arr(1 To A)
Arr(A) = C.Value
Next
End With
.ShowAllData
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row

'Il est pris pour acquis que ton tableau débute en A1
Set Rg = .Range("A1", .Cells(DerLig, DerCol))
End With

On Error Resume Next
For Each Elt In Arr
Err = 0
Set Sh = Worksheets(Elt)
If Err = 0 Then
Sh.Cells.Clear
Else
Err = 0
Set Sh = Worksheets.Add(after:=Sheets(Sheets.Count))
Sh.Name = Elt
End If
With Rg
.AutoFilter field:=2, Criteria1:=Elt
.SpecialCells(xlCellTypeVisible).Copy Sh.Range("A1")
End With
Next
Rg.AutoFilter
Worksheets(NomFeuille).Select
Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub
'--------------------------------------------------------




"John" a écrit dans le message de groupe de discussion :

michdenis a écrit :
Bonjour,

| Cela est-il possible sans faire du VB?

Oui c'est possible en utilisant un filtre élaboré.
Cependant, tu vas devoir répéter 20 fois la même procédure
pour chacun de tes groupes.

Pour ce faire, tu définis une zone de critère ayant 2 cellules
Exemple :

En G1 l'étiquette de colonne où sont les codes "agent"
En G2 tu écris le code d'un premier agent

Tu crées la feuille que tu baptises au nom du premier agent

IMPORTANT : C'est à partir de la feuille (feuille active) que tu viens d'ajouter
que tu dois appeler la commande "Filtre élaboré". Il ne te
reste plus qu'à renseigner les différentes cases de la fenêtre du filtre élaboré.

Tu répètes ce processus pour tous les codes agents que tu as.







Déjà un grand merci à toi MichDenis !

Je vais essayer...
Question, cela peut-il etre automatisé?
Je veux dire que je n'ai plus qu'à ecraser les données de la feuille
principale chaque semaine ?
Avatar
Thierry
Bonjour,
Si vous avez Access, il y a cette procédure que j'utilise très souvent :
http://www.datapigtechnologies.com/flashfiles/accessexplosion.html

Vous pourrez télécharger le fichier tout en bas de cette page
http://www.datapigtechnologies.com/AccessMain.htm

Bon courage.

"John" a écrit dans le message de
news:%
Bonsoir,

Je vous remercie par avance de votre aide.

J'ai une feuille contenant environ 7 à 10 000 lignes de données extraites
d'une base SQL
J'ai une colonne équipe qui me donne le code de l'agent (style
1AR,1D00,2B00,3000...) soit environ 25 codes differents.
De cette feuille je voudrais "eclater" toutes les données lignes
afférantes à ce meme code agent dans un onglet spécifique ou portant le
meme nom.

J'ai essayé avec les fonctions recherchev (qui ne fonctionne pas comme je
veux), en faisant un tableau croisé dynamique mais cela me demande des
manips...

Cela est-il possible sans faire du VB?

Vraiment merci à vous d'éclairer ma lanterne !
John

Avatar
mugrec75
bonjour John,

créer le tableau croisé dynamique en mettant le code agent en zone page
et cliquer sur le bouton "afficher les pages " de la barre TCD, ça générera
un onglet par code agent

cordialement


"John" wrote:

Bonsoir,

Je vous remercie par avance de votre aide.

J'ai une feuille contenant environ 7 à 10 000 lignes de données
extraites d'une base SQL
J'ai une colonne équipe qui me donne le code de l'agent (style
1AR,1D00,2B00,3000...) soit environ 25 codes differents.
De cette feuille je voudrais "eclater" toutes les données lignes
afférantes à ce meme code agent dans un onglet spécifique ou portant le
meme nom.

J'ai essayé avec les fonctions recherchev (qui ne fonctionne pas comme
je veux), en faisant un tableau croisé dynamique mais cela me demande
des manips...

Cela est-il possible sans faire du VB?

Vraiment merci à vous d'éclairer ma lanterne !
John
.

Avatar
John
mugrec75 a écrit :
bonjour John,

créer le tableau croisé dynamique en mettant le code agent en zone page
et cliquer sur le bouton "afficher les pages " de la barre TCD, ça générera
un onglet par code agent

cordialement


"John" wrote:

Bonsoir,

Je vous remercie par avance de votre aide.

J'ai une feuille contenant environ 7 à 10 000 lignes de données
extraites d'une base SQL
J'ai une colonne équipe qui me donne le code de l'agent (style
1AR,1D00,2B00,3000...) soit environ 25 codes differents.
De cette feuille je voudrais "eclater" toutes les données lignes
afférantes à ce meme code agent dans un onglet spécifique ou portant le
meme nom.

J'ai essayé avec les fonctions recherchev (qui ne fonctionne pas comme
je veux), en faisant un tableau croisé dynamique mais cela me demande
des manips...

Cela est-il possible sans faire du VB?

Vraiment merci à vous d'éclairer ma lanterne !
John
.





UN GRAND MERCI 0 VOUS TOUS !!!
JE VAIS TESTER TOUT CELA ! JE VOUS TIENS AU COURANT