VBA - Projet de création d'un fichier clients

PFG60

XLDnaute Junior
Bonjour à tous,

Je suis en pleine construction d'un fichier client.

Ce fichier servira à créer, rechercher, modifier, supprimer et imprimer une fiche à client.
J'en suis très loin des ces objectifs.
Pour le moment j'en suis au moment de la création.

Je cherche à résoudre les points suivants :

  • lors de la saisie d'un code postal dans une textbox, la combobox située en dessous donne une liste des villes qui y sont associées (image explicative avec le lien de téléchargement)
  • indiquer le nombre total de chaque type de client : je sais le faire en formule avec NB.SI mais pas en VBA (image explicative avec le lien de téléchargement)

Si vous pouvez m'apporter votre contribution, cela serait parfait.
En effet, après deux jours de recherche sur le net avec des formules que j'ai tenté d'adapter, rien à faire.

Les fichiers étant trop lourd pour le forum, voici le lien où vous pouvez les télécharger :
https://www.dropbox.com/sh/zbvd4en22obu7cr/AABlPtHCqJ6T44E7dJubtie2a?dl=0


Vous remercient par avance
 

camarchepas

XLDnaute Barbatruc
Re : VBA - Projet de création d'un fichier clients

Bonjour ,

Vooici donc un premier résultat ,

en fonction du code postal ,

nom de ville et département s'affichent dans les combobox respectives , reste à ajouter à la liste une nouvelle ville .

je te mets ici le code ajouté à userform menu . un événementiel supplémentaire change avec un test de limite de 5 caracteres de longueur pour le contenu du code postal

te passe le fichier par une autre voie , pour test


Fichiers disponibles au téléchargement


Code:
Private Sub TextCode_Postal_Change()
Dim Trouve As Range
Dim Prem_Adresse As String
Dim Liste() As String
ReDim Liste(0)
If Len(TextCode_Postal) = 5 Then
With Worksheets("CPetVILLES").Range("A:A")
    Set Trouve = .Find(TextCode_Postal, LookIn:=xlValues)
    If Not Trouve Is Nothing Then
        Prem_Adresse = Trouve.Address
        Do
           If Liste(0) <> "" Then ReDim Preserve Liste(UBound(Liste) + 1)
            Liste(UBound(Liste)) = Trouve.Offset(0, 1).Value
            ComboBoxDepartement = Trouve.Offset(0, 2).Value
            Set Trouve = .FindNext(Trouve)
        Loop While Not Trouve Is Nothing And Trouve.Address <> Prem_Adresse
     If UBound(Liste) < 1 And Liste(0) <> "" Then
       ComboBoxVILLE.List = Liste
       ComboBoxVILLE.ListIndex = 0
       ComboBoxVILLE.Enabled = False
      Else
       If UBound(Liste) > 0 Then
        ComboBoxVILLE.List = Liste
        Else
        ComboBoxVILLE.ListIndex = -1
       End If
       ComboBoxVILLE.Enabled = True
    End If
   End If
End With


End If
End Sub
 

PFG60

XLDnaute Junior
Re : VBA - Projet de création d'un fichier clients

Bonjour à tous,

J'ai trouvé la solution (après beaucoup, beaucoup, beaucoup de recherches) pour afficher le nombre total de chaque type :

  • effectuer un NB.SI dans la feuille "Clients"
  • récupérer les donnes dans les textbox : MONuserform.TextBox1.Value = Sheets("Feuil1").Range("A10001").Value

Voilà, voilà...
Ça avance tranquillement mais surement.

https://www.dropbox.com/sh/lo4ujxx2bd6c3b8/AACyZ36cZfc4czuVMFXTh9o_a?dl=0



MAJ 20/09/14 à 15h35
Finalement j'ai ajouté une feuille pour le nombre total de client : plus simple dans la gestion du code (de mon point de vue).
Ce qui donne la formule suivante (a adapter en fonction de vos besoins) :
MONuserform.TextBox1.Value = Sheets("Feuil2").Range("A1").Value​
 
Dernière édition:

PFG60

XLDnaute Junior
Re : VBA - Projet de création d'un fichier clients

Bonjour à tous,

J'ai du régler des problèmes urgents avant de poursuivre la création du fichier.
Voilà où j'en suis : saisie des données clients = OK

Voici les étapes qui restent à produire :
1. recherche multicritère : résultats dans une listbox --> Nom client, ville client, département client, fixe client, portable client, e-mail client, site client, nom contact, fixe contact, portable contact, e-mail contact
2. modification fiche : a l'issue d'une recherche modification d'une fiche après avoir cliquer une fois sur une ligne dans la liste des résultats de la listbox
3. suppression fiche : idem à la modification mais suppression de la ligne dans la base
4. impression de la fiche : idem à la modification mais impression de la fiche avec l'aide de l'onglet "Fiche"

Ce qui me conduit à ceci :
1. Comment faire une recherche multicritère avec le résultat dans une listbox avec seulement les éléments mentionnés plus haut ?
2. Comment faire pour modifier une fiche (soit une ligne dans la base contacts) ?
3. Comment supprimer une fiche sans provoquer d'erreur dans le fichier ?
4. Comment récupérer les éléments d'une fiche après une recherche pour impression dans les cellules correspondantes de l'onglet "Fiche" ?


Commençons par la recherche multicritère.
J'ai effectué des recherches sur le net et le fofo mais je ne comprends pas comment faire.
Les vidéos que je trouve sur le net sont en anglais (moi et l'anglais...). SNIF SNIF. Celles qui sont en français ne me permettent pas de comprendre comment fonctionne la recherche et l'intégration dans une listbox avec seulement certains éléments affichés.

Avez-vous des pistes ou des trucs afin que je puisse continué de construire le fichier ?


https://www.dropbox.com/s/unf50kv0zcu6t75/Clients V1.xlsm?dl=0
 

PFG60

XLDnaute Junior
Re : VBA - Projet de création d'un fichier clients

Bonjour à tous,

J'ai trouvé un code qui me semble être bien mais il y a un problème.

Le code n'affiche que le contenu de la première colonne A ("TYPE") de la feuille "Clients" dans le listbox.
Voici le code que j'ai utilisé :
Code:
Private Sub Search_Click()
    
If ComboBoxCATEGORIEsearch = "" Then
    rep = MsgBox("Le critère de recherche TYPE ne peut pas être vide !", vbMsgBoxSetForeground + vbOKOnly + vbExclamation, "AS PRODUCTION - ATTENTION")
    Call Me.ComboBoxCATEGORIEsearch.SetFocus
    Exit Sub
End If

    a = 0
    Me.Resultats.Clear
    If Me.ComboBoxNOMsearch = "" Then Me.ComboBoxNOMsearch = "*"
    If Me.ComboBoxCATEGORIEsearch = "" Then Me.ComboBoxCATEGORIEsearch = "*"

    For b = 2 To [A65000].End(xlUp).Row
        If Cells(b, 1) Like "*" & Me.ComboBoxCATEGORIEsearch & "*" _
            And Cells(b, 5) Like ComboBoxNOMsearch Then
                Me.Resultats.AddItem
                Me.Resultats.List(a, 0) = Cells(b, 1)
                Me.Resultats.List(a, 1) = Cells(b, 2)
                Me.Resultats.List(a, 2) = Cells(b, 3)
                Me.Resultats.List(a, 3) = Cells(b, 4)
                Me.Resultats.List(a, 4) = Cells(b, 5)
                Me.Resultats.List(a, 5) = b
                a = a + 1
        End If
    Next b
        
End Sub

Private Sub Resultats_click()
    Ligne = Resultats.Column(5)
End Sub



Voici ce que cela donne en image :
2014-10-26 11_20_41.jpg

Si avez une idée du problème, si je suis preneur !


Lien du fichier : https://www.dropbox.com/s/schw373xcvo1316/Clients V0.6.xlsm?dl=0
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : VBA - Projet de création d'un fichier clients

Bonjour à tous

PFG60
Impossible de télécharger ton fichier sans devoir changer la configuration de mon navigateur...:rolleyes:
(Ou alors en perdant du temps à changer ma config ou de navigateur mais pourquoi le ferai-je alors que tu peux joindre un fichier exemple* ici dans la discussion (en la compressant au besoin -> Clic-droit -> Envoyer vers Dossiers compressés)

*: Puisque que tu es en mode création de projet (donc en phase de test, non ? ;) ), inutile de joindre une version complète de ton appli mais juste sa version allégée créée pour l'occasion avec le strict nécessaire (l'userfom+le code VBA incriminé et seulement les feuilles utilisées et enfin expurgées des fioritures: images, couleurs etc...)
 
Dernière édition:

PFG60

XLDnaute Junior
Re : VBA - Projet de création d'un fichier clients

Staple1600

Je comprend parfaitement ce que tu explique, mais même en version "allégé" le fichier est à plus 1Mo. :(
Si je compresse dans un fichier ZIP (avec compression max, impossible de descendre en dessous de 1 Mo.

Essaie de télécharger avec ce lien (doit te proposer une fenêtre de téléchargement selon ton navigateur) ;) :
 

Staple1600

XLDnaute Barbatruc
Re : VBA - Projet de création d'un fichier clients

Re


Ceci devra fonctionner en théorie (pas testé faute de PJ dans le fil ;) )
Code:
Private Sub Search_Click()
Dim b&
If ComboBoxCATEGORIEsearch = "" Then
    rep = MsgBox("Le critère de recherche TYPE ne peut pas être vide !", vbMsgBoxSetForeground + vbOKOnly + vbExclamation, "AS PRODUCTION - ATTENTION")
    Call Me.ComboBoxCATEGORIEsearch.SetFocus
    Exit Sub
End If
  
    Me.Resultats.Clear
    Me.Resultats.ColumnCount = 5
    If Me.ComboBoxNOMsearch = "" Then Me.ComboBoxNOMsearch = "*"
    If Me.ComboBoxCATEGORIEsearch = "" Then Me.ComboBoxCATEGORIEsearch = "*"

    For b = 2 To Sheets("Clients").[A65000].End(xlUp).Row
        If Cells(b, 1) Like "*" & Me.ComboBoxCATEGORIEsearch & "*" _
            And Cells(b, 5) Like ComboBoxNOMsearch Then
            Resultats.List = Cells(b, 1).Resize(, 5).Value
        End If
    Next b
End Sub

PS1: Rien qu'en voyant ta copie d'écran de ton précédent message, je devine que tu n'as pas suivi ces conseils ;)
pour l'occasion avec le strict nécessaire (l'userfom+le code VBA incriminé et seulement les feuilles utilisées et enfin expurgées des fioritures: images, couleurs etc...)

PS2:pourquoi ferais-je un effort (modifier ma config personnelle) quand le demandeur n'en fait pas (vraiment alléger sa PJ) ? ;)
 

Staple1600

XLDnaute Barbatruc
Re : VBA - Projet de création d'un fichier clients

Bonjour à tous

Merci grisan29 de ta sollicitude
Mais si je le télécharge pas sur dropbox, tu comprendras que je ne puisse pas le télécharger sur cjoint ;)
(sinon je me contredis ;) )

J'attends de voir si PFG60 a testé ma proposition VBA avant de réviser ma position ;)

(Peut-être que d'ici là , il aura eu le temps de concocter une vrai fichier exemple allégé et qu'il sera joint directement sur XLD ;) )
 

PFG60

XLDnaute Junior
Re : VBA - Projet de création d'un fichier clients

Bonjour à tous,

Je n'ai pu tester le code de Staple1600 avant ce jour car j'ai du aller aux urgences. :(

Le téléchargement par Dropbox ou CJoint ne provoque pas de changement de configuration du navigateur sauf si ce dernier a été personnalisé dans son code. Testé sur Internet Explorer, Firefox, Chrome et AvantBrowser.
Parenthèse fermée sur ce point.


Le fichier joint est donc restreint plus qu'au minimum. Mais cela ne permettra pas de faire une auto-sélection de la ville en fonction du code postal pour tester les futurs codes de recherche multicritères.


Le code fonctionne à merveille pour une recherche avec un seul critère : ici il s'agit du "Type".
Cependant, si je peux abuser un peu ;), comment faire une recherche multicritères ?

Voilà comment mon patron souhaite le fonctionnement de la recherche multicritères :
- Type : résolu par le code de Staple1600
- NOM : saisie manuel et/ou liste déroulante auto-complétée depuis la base
- code postal : saisie manuel par l'utilisateur
- VILLE : auto-sélection en fonction du code postal saisi (le code est déjà présent dans le VBA)
- NOM du contact : idem que NOM
Seul le critère "Type" est obligatoire.

Les résultats à afficher sont :
- NOM : colonne B
- code postal : D
- VILLE : E
- NOM du contact : M
- Téléphone du contact : R
- Portable du contact : S
 

Pièces jointes

  • Clients V0.6 - Copie.xlsm
    46.6 KB · Affichages: 269

Staple1600

XLDnaute Barbatruc
Re : VBA - Projet de création d'un fichier clients

Bonsoir à tous

PFG60
Activer ou pas javascript , changer les paramètres de tel ou tel addon présent dans mon navigateur, j'appelle cela changer la config de mon browser ;)
Chose que je n'ai pas à faire quand la PJ est dans le fil comme ta dernière PJ (donc c'était possible d'alléger la PJ ;) )

Ceci dit , ton patron n'est pas mon patron et ce qu'il souhaite n'est pas mon souci. ;)

Par contre te filer un coup de main, pas de souci.

Mais répondre à ce qui ressemble à un cahier des charges de prestation de services, je suis moins chaud là ;)
(ou alors dire à ton patron de cliquer Lien supprimé )

Donc à te relire (en ce qui me concerne) avec des questions sur des points précis sur tes essais de code VBA ;)
 

Discussions similaires

Réponses
2
Affichages
294
Réponses
5
Affichages
371

Statistiques des forums

Discussions
312 294
Messages
2 086 899
Membres
103 404
dernier inscrit
sultan87