Recherche retournant plusieurs lignes

Elane

XLDnaute Nouveau
Bonsoir,

J'ai un niveau plutôt limité sur excel,:( j'espère donc que vous accepterez de m'aider comme vous l'avez si bien fait la fois précédente.

Voilà mon problème :
J'ai un fichier avec plusieurs feuilles. La première contient les ventes de tous les vendeurs (sales org.) et les autres sont propres à un vendeur.
Je voudrais donc que les feuilles spécifiques à un vendeur se construisent toutes seules, j'entends par là qu'elles reprennent exactement les lignes de la feuille 1 qui correspondent aux ventes de mon vendeur, et ça se complique encore car il me faudrait aussi la ligne qui correspond au client.
C'est un peu dur à expliquer alors je vous joint un fichier simplifié. La deuxième feuille correspond à ce que je voudrais obtenir.

Je ne sais pas du tout coder en VBA donc si vous aviez une solution sous forme de formule ce serait parfait.:eek:

Merci d'avance à tous ceux qui voudront bien se pencher sur mon problème.

PS : C'est assez urgent, je dois avoir fini ce fichier pour ce jeudi matin.:(
 

Pièces jointes

  • sales org.xlsx
    11.9 KB · Affichages: 59
Dernière édition:

James007

XLDnaute Barbatruc
Re : Recherche retournant plusieurs lignes

Bonjour,

Pour atteindre facilement ton objectif, il te faut :

1. Une base de données complète qui reprend tous les champs de toutes les organisations de vente sur une seule feuille

2. Un tableau croisé dynamique qui te fera en deux secondes toutes tes analyses.

Le problème que tu rencontres, en ce moment, est uniquement dû à la vision cosmétique finale de l'impression d'un tableau ...
Pour avancer, il faut mettre de côté cet aspect et ne le reconsidérer qu'une fois que tu auras ton analyse disponible ...

A +
:)
 

job75

XLDnaute Barbatruc
Re : Recherche retournant plusieurs lignes

Bonjour Elane, salut James,

C'est assez urgent, comme je l'ai dit j'aurai besoin d'un semblant de solution pour jeudi matin...

Semblant je ne sais pas faire. Cette macro dans ThisWorkbook :

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim s, vendeur As Integer, i As Long
s = Split(Sh.Name, " ")
If UBound(s) < 2 Then Exit Sub
vendeur = s(2)
Application.ScreenUpdating = False
Sheets("Global").Cells.Copy Cells
For i = Range("A" & Rows.Count).End(xlUp).Row To 3 Step -1
  If IsNumeric(Cells(i, 6).Text) And Cells(i, 6) <> vendeur _
    Or Cells(i, 1).Interior.ColorIndex > 0 And Cells(i + 1, 1) = "" _
    Or Cells(i, 1) & Cells(i + 1, 1) = "" Then Rows(i).Delete
Next
If Cells(3, 1) = "" Then Rows(3).Delete
End Sub

Suppression classique de lignes, mais il faut faire les bons tests.

La macro se déclenche quand on active une feuille quelconque.

Voir le fichier (1) pour Excel 2003 et 2007/2010.

A+
 

Pièces jointes

  • sales org(1).xls
    41.5 KB · Affichages: 65
  • sales org(1).xlsm
    20.1 KB · Affichages: 45

James007

XLDnaute Barbatruc
Re : Recherche retournant plusieurs lignes

Salut Job75 :)

Super bien vu ta solution ... :cool:

Dire que j'ai compris exactement le contraire ... qu'à partir des feuilles individuelles, elle voulait regrouper tout dans la feuille Globale ....:rolleyes:

Dommage que malgré l'urgence, elle ne soit toujours pas revenue voir ton astuce ...

A +
:)
 
Dernière édition:

Elane

XLDnaute Nouveau
Re : Recherche retournant plusieurs lignes

Elle vient, elle vient ! lol Il me reste encore la soirée pour exploiter ce que vous m'avez concocter avec tant de gentillesse, ou plaisir de relever des défis ou que sais-je. Quoi qu'il en soit, merci beaucoup ! Je regarde donc ça de suite.
 

Elane

XLDnaute Nouveau
Re : Recherche retournant plusieurs lignes

Super merci beaucoup !

J'ai essayé de déclarer les constantes à part, pour simplifier les modifications potentielles mais ça ne fonctionne pas. Aucune urgence cette fois, juste par curiosité.
Voici le code que j'ai mis à ma sauce :

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)

Dim salesColumnNumber, firstCustomerLine, salesOrgNumber, sheetName As Integer
Dim i As Long

salesColumnNumber = 6
firstCustomerLine = 3
sheetName = Split(Sh.Name, " ")

If UBound(sheetName) < 2 Then Exit Sub
salesOrgNumber = sheetName(2)
Application.ScreenUpdating = False
Sheets("Global").Cells.Copy Cells
For i = Range("A" & Rows.Count).End(xlUp).Row To firstCustomerLine Step -1
  If IsNumeric(Cells(i, salesColumnNumber).Text) And Cells(i, salesColumnNumber) <> salesOrgNumber _
    Or Cells(i, 1).Interior.ColorIndex > 0 And Cells(i + 1, 1) = "" _
    Or Cells(i, 1) & Cells(i + 1, 1) = "" Then Rows(i).Delete
Next
If Cells(firstCustomerLine, 1) = "" Then Rows(firstCustomerLine).Delete
End Sub

Et voici l'erreur que j'ai eu :

Erreur de compilation : Tableau attendu (sur la ligne du UBound)

Merci d'avance :p
 

Pierrot93

XLDnaute Barbatruc
Re : Recherche retournant plusieurs lignes

Bonjour,
essaye ainsi :
Code:
Dim sheetName() As String
sheetName = Split(Sh.Name)
A noter, inutile de préciser l'espace comme séparateur, c'est celui utilisé par défaut par la fonction "split"...
Bonne journée
@+
 

job75

XLDnaute Barbatruc
Re : Recherche retournant plusieurs lignes

Bonjour le fil,

Juste une petite remarque, je pense qu'Elane n'a pas compris que quand j'écris :

Dim s, vendeur As Integer, i As Long

la variable s est déclarée implicitement As Variant.

Elle a cru qu'elle était déclarée comme vendeur...

A+
 

Discussions similaires

Réponses
8
Affichages
270
Réponses
16
Affichages
553

Statistiques des forums

Discussions
312 305
Messages
2 087 083
Membres
103 458
dernier inscrit
Vulgaris workshop