Extraction à l'intérieur d'une BD

Fermé
chaï - Modifié par chaï le 17/03/2015 à 14:10
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 - 17 mars 2015 à 21:57
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
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

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
17 mars 2015 à 14:08
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.

0
Oui pardon. Ne pas tenir compte de ceux ayant fait 1 seul achat seulement.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751 > chaï
Modifié par pijaku le 17/03/2015 à 14:18
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?
0
chaï > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
17 mars 2015 à 14:40
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.
0
Est-ce plus clair?
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
17 mars 2015 à 15:40
Bonjour à tous les deux

C'est clair
Une autre question. To tableau est il trié selon la colonne client comme dans ton exemple?

Cdlmnt
0
Oui affirmatif!!
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751 > chaï
17 mars 2015 à 16:11
Je viens de comprendre...
Donc oui, c'est plus clair!

Salut ccm81, tu prends le relais?
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
17 mars 2015 à 16:24
Un exemple à adapter via une macro
https://www.cjoint.com/?3CrqJnHwdxG

mes excuses (et salutations) à pijaku pour l'incruste

Cdlmnt
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
17 mars 2015 à 16:33
Pas de quoi s'excuser, c'est avec plaisir.
0
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
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
17 mars 2015 à 18:09
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
0
Je veux dire que la macro lorsque je l'applique à mon projet ne fonctionne pas... j'ai des message d'erreur...

même en remplacant les noms de colonnes...
0
J'ai toujours le même message d'erreur: erreur d'exécution '9'. L'indice n'appartient pas à la sélection....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
Modifié par ccm81 le 17/03/2015 à 19:11
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
0
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
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
17 mars 2015 à 21:57
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
0