Extraction à l'intérieur d'une BD
chaï
-
ccm81 Messages postés 11033 Statut Membre -
ccm81 Messages postés 11033 Statut Membre -
Bonjour,
voici ma question:
Dans la BD ci-dessous, je désire extraire les lignes associées aux clients ayant fait 2 achats (donc ne pas tenir compte de ceux en ayant fait 1 seul achat seulement). Par la suite, je voudrais créer une colonne intitulée même magasin avec réponse oui/non, afin de savoir si le même client a réalisé ses 2 achats dans le même # de magasin ou pas... Je ne peux pas faire le tout manuellement car j'ai plus de 4400 clients...
Merci
voici ma question:
Dans la BD ci-dessous, je désire extraire les lignes associées aux clients ayant fait 2 achats (donc ne pas tenir compte de ceux en ayant fait 1 seul achat seulement). Par la suite, je voudrais créer une colonne intitulée même magasin avec réponse oui/non, afin de savoir si le même client a réalisé ses 2 achats dans le même # de magasin ou pas... Je ne peux pas faire le tout manuellement car j'ai plus de 4400 clients...
Merci
| magasin | achat | Client | ID |
|---|---|---|---|
| 8 | 01 | 2756 | 1 |
| 8 | 02 | 2756 | 1 |
| 10 | 01 | 2758 | 2 |
| 4 | 01 | 2759 | 3 |
| 7 | 02 | 2759 | 3 |
| 5 | 01 | 2760 | 4 |
| 5 | 01 | 2761 | 5 |
| 6 | 02 | 2761 | 5 |
| 6 | 01 | 2762 | 6 |
| 4 | 01 | 2763 | 7 |
| 4 | 01 | 2764 | 8 |
| 4 | 01 | 2765 | 9 |
| 4 | 02 | 2765 | 9 |
| 3 | 01 | 2766 | 10 |
| 6 | 02 | 2766 | 10 |
| 8 | 01 | 2767 | 11 |
| 8 | 01 | 2768 | 12 |
6 réponses
-
Bonjour ,
1- j'ai testé une modification de ton message. C'était juste pour vérifier.
Ton tableau correspond toujours?
2- Tu dis :je désire extraire les lignes associées aux clients ayant fait 2 achats (donc ne pas tenir compte de ceux en ayant fait 2)
Soit on en tiens compte soit pas... Faut savoir.
-
- Il faut que tu sois beaucoup (beaucoup, beaucoup...) plus clair.
1- je désire extraire les lignes associées aux clients...- Que désires tu extraire?
Toutes les valeurs de la ligne? Le numéro de ligne? Une seule valeur le n° du client?- Ou extraire cette (ces) donnée(s)?
Autre feuille? => son nom?
Ailleurs dans la même feuille? => ou?
2- Comment le client 2756 a pu faire 1 achat puis 2 achats dans le magasin 8?
Soit il n'en a fait qu'un, soit 2, soit 3... Non? - 1) Je désire extraire toute les valeurs de la ligne sur une autre feuille. Peut importe le nom de la feuille.
2) En fait, dans la colonne achat on y retrouve 1 et 2 comme valeur. Le client peut avoir fait un seul achat, ex: 2758. Donc, pour ce numéro de client, on retrouve seulement une ligne associé à son numéro (avec 1 dans la colonne achat). Cependant, pour un autre client ex: 2756, on retrouve 2 lignes associées à ce numéro de client. Ainsi, il a donc fait un premier achat au magasin 8 et un second achat au magasin 8.
Ainsi, dans l'extraction le client 2758 n'apparaîtrait pas car il a fait un seul achat tandis que pour le client 2756 dans l'extraction on retrouverait les deux lignes associées à chacun de ses achats puisqu'il en a fait 2.
-
-
-
Bonjour à tous les deux
C'est clair
Une autre question. To tableau est il trié selon la colonne client comme dans ton exemple?
Cdlmnt -
Un exemple à adapter via une macro
https://www.cjoint.com/?3CrqJnHwdxG
mes excuses (et salutations) à pijaku pour l'incruste
Cdlmnt-
-
Bonjour merci beaucoup pour l'aide.
Cependant, j'éprouve quelques petits problèmes. Je n'arrive pas à rouler la macro. J'ai changé les constantes. Cependant si le nom de mes colonnes diffères, dois-je les changer également à droite? Ex: Const cosceauFS = 25 ' colonne achat (ici achat doit devenir sceau?)
' constantes à modifier selon ta configuration
Const FS = "BD" ' nom feuille soource
Const lidebFS = 2 ' premier ligne données
Const codebFS = 1 ' premiere colonne données
Const nbco = 37 ' nombre de colonnes tableau
Const copermisFS = 26 ' colonne client
Const cosceauFS = 25 ' colonne achat
Const FB = "Doubles abbatages seulement" ' feuille but
Const lidebFB = 2 ' premiere ligne
Const codebFB = 1 ' première colonne
-
-
1. Je n'arrive pas à rouler la macro.
que veux tu dire par là ?
2. Cependant si le nom de mes colonnes diffères, dois-je les changer également à droite? Ex:
Const cosceauFS = 25 ' colonne achat
(ici achat doit devenir sceau?)
Non seul le n° intervient, tout ce qu'il y a après l'apostrophe est un commentaire pour éclairer le programmeur et n'est pas "vu" par vba
Par contre, dans la procedure les noms des constantes doivent aussi changer
Donc Edition puis
Remplacer coachetFS par cosceauFS et remplacer tout -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
J'ai toujours le même message d'erreur: erreur d'exécution '9'. L'indice n'appartient pas à la sélection....
Quand tu obtiens ce message d'erreur, tu vérifies l'état des variables (en passant le curseur dessus)
Vérifies que les noms des feuilles sont corrects (attention aux espaces)
Envoies un extrait (50 lignes) de ton vrai ficier au format excel 2003 sur cjoint.com et joins le lien à ton prochain message-
Je vérifie mais rien.... Peut-être verra tu une erreur:
Désolé...
' constantes à modifier selon ta configuration Const FS = "BD" ' nom feuille soource Const lidebFS = 2 ' premier ligne données Const codebFS = 1 ' premiere colonne données Const nbco = 37 ' nombre de colonnes tableau Const copermisFS = 26 ' colonne client Const cosceauFS = 25 ' colonne achat Const FB = "Feuil4" ' feuille but Const lidebFB = 2 ' premiere ligne Const codebFB = 6 ' première colonne Public Sub Transfert() Dim lifinFS As Long, TFS, nbliFS As Long, plageFS As Range, co As Long, liFS As Long Dim client As String, achat As Long, nbachat As Long Dim TFB, nbliFB As Long, liFB As Long Dim t As Single t = Timer lifinFS = Sheets(FS).Cells(Rows.Count, codebFS).End(xlUp).Row Set plageFS = Sheets(FS).Range(Cells(lidebFS, codebFS), Cells(lifinFS, codebFS + nbco - 1)) TFS = plageFS nbliFS = plageFS.Rows.Count nbliFB = Application.WorksheetFunction.SumIf(Columns(cosceauFS), ">=2") ReDim TFB(1 To nbliFB, 1 To nbco) liFS = 1 liFB = 1 On Error GoTo fin Do achat = TFS(liFS, cosceauFS) While achat = 1 liFS = liFS + 1 achat = TFS(liFS, cosceauFS) Wend client = TFS(liFS, copermisFS) nbachat = 1 For co = 1 To nbco TFB(liFB, co) = TFS(liFS - 1, co) Next co liFB = liFB + 1 While TFS(liFS, copermisFS) = client For co = 1 To nbco TFB(liFB, co) = TFS(liFS, co) Next co liFS = liFS + 1 liFB = liFB + 1 Wend Loop Until liFS >= nbliFS fin: Sheets(FB).Cells(lidebFB, codebFB).Resize(nbliFB, nbco) = TFB MsgBox " temps mis " & Timer - t & " sec" End Sub
-
-
Difficile de te répondre
Sur quelle ligne se produit l'erreur, quelles sont les valeurs des variables qui interviennent dans cette ligne
Je t'ai demandé un extrait du fichier au format excel 2003, sans ça on va tourner en rond
Cdlmnt