Projet Base de données client pour rédiger une fiche d'intervention

Bonjour,

d'abord merci pour ce site internet très complet que je découvre. Je me lance dans la création d'un fichier client afin de garder en mémoire leurs infos personnelles car beaucoup de mes clients me disent qu'ils sont déjà venus.. mais comme on rédige les fiches d'intervention sous Word, on ne s'embête pas à garder ces infos. (mais à partir d'aujourd'hui je veux que ça change afin de les garder. *

J'ai commencer par crée ma fiche client sous Excel et ensuite j'y ai ajouter une macro afin d'avoir un bouton qui me permet d'effacer toutes les cases remplis comme nom, prénom, numéro de téléphone.. et de revenir à un document vierge en un seul clique.

Puis je me suis lancé dans la création d'un bouton qui permettrait en cas de nouveau client, de renseigner les coordonnées et que celle-ci soit enregistrer sur une seconde feuille de mon fichier Excel. Jusque là, j'ai réussi grâce au tuto sur ce site.

Dans le tuto que j'ai suivi, dans le code du userform, il y a une ligne qui dit:

'Numéro de ligne de la première cellule vide de la colonne 1 en partant du bas de la feuille
ligne = Cells(Rows.Count, 1).End(xlUp).Row + 1

donc ce qui fait que lorsque je rentre un nouveau client, ses données une fois validée vont à la ligne de la première cellule vide de la colonne 1 en partant du BAS. Mais moi ce que je veux c'est que ce soit en partant du haut. Dans ma feuille2, j'ai crée un tableau avec des entête (nom, prénom, adresse, cp, ville, tel, email) donc la ligne 1 de la colonne A à G est déjà remplit. Donc je voudrais qu'à chaque nouveau client, ça viennent remplir la case juste en dessous de celle qui est vide.

Par exemple, si j'ajoute mon premier client, je voudrais qu'il soit ajouté dans la ligne 2, puis je rajoute un second client, je veux qu'il aille dans la ligne2 puis un troisième dans la ligne 3....

Et je ne trouve pas la bonne "ligne de code" pour faire cela.

Merci d'avance. Je vous joins mon fichier xltm.

Bonjour et bienvenue,

Un premier point est de ne pas préformater votre tableau comme vous l'avez fait jusque la ligne 1300.

Vu que vous avez fait une mise en forme sous tableau structuré, vous avez juste besoin de la ligne des titres (ligne 1) et la première ligne vide (ligne 2). Une fois fait vérifiez dans la gestionnaire de noms que la plage "Tableau1" est bien ceci --> "Feuil2!$A$2:$G$2"

Ensuite remplacez votre code ajouter par celui-ci :

'Bouton Ajouter
Private Sub CommandButton_ajouter_Click()
    'Coloration des Labels en noir (&H80000012 = couleur de base de la propriété ForeColor)
    Label_nom.ForeColor = &H80000012
    Label_prenom.ForeColor = &H80000012
    Label_adresse.ForeColor = &H80000012
    Label_cp.ForeColor = &H80000012
    Label_ville.ForeColor = &H80000012
    Label_telephone.ForeColor = &H80000012
    Label_email.ForeColor = &H80000012

With Worksheets("feuil2").ListObjects("Tableau1")
    If .ListRows.Count = 0 Then
        .ListRows.Add: lig = 1
    Else: .ListRows.Add: lig = .ListRows.Count
    End If
    'Insertion des valeurs sur la feuille
        .DataBodyRange.Item(lig, 1) = TextBox_nom
        .DataBodyRange.Item(lig, 2) = TextBox_prenom
        .DataBodyRange.Item(lig, 3) = TextBox_adresse
        .DataBodyRange.Item(lig, 4) = TextBox_cp
        .DataBodyRange.Item(lig, 5) = TextBox_ville
        .DataBodyRange.Item(lig, 6) = TextBox_telephone
        .DataBodyRange.Item(lig, 7) = TextBox_email
End With

    'Après insertion, réinitialisation du formulaire
     TextBox_nom = ""
     TextBox_prenom = ""
     TextBox_adresse = ""
     TextBox_cp = ""
     TextBox_ville = ""
     TextBox_telephone = ""
     TextBox_email = ""     
End Sub

Cordialement

Wow ça parait tellement simple à lire. Merci beaucoup ça fonctionne à merveille.

Si je peux encore poser une autre question (je ne sais pas si je dois réouvrir un autre sujet quand c'est une question differente du titre initiale)

Maintenant pour finaliser la chose, j'aimerais que lorsque je rentre une lettre par exemple le A dans la case client, automatiquement ça m'affiche tous les noms commencant par A puis ensuite si la personne s'appelle Antrain Jerome, je rentre donc le A puis le N puis le T jusqu'à avoir un minimum de résultat proposer pour trouver mes clients plus rapidement.

Merci

Si je peux encore poser une autre question (je ne sais pas si je dois réouvrir un autre sujet quand c'est une question differente du titre initiale)

Non vous pouvez rester sur le fil. Je peux changer le titre du sujet éventuellement

Maintenant pour finaliser la chose, j'aimerais que lorsque je rentre une lettre par exemple le A dans la case client, automatiquement ça m'affiche tous les noms commencant par A puis ensuite si la personne s'appelle Antrain Jerome,

Vous parlez de la cellule B6 dans la feuille 1 ?

Pas de soucis pour le changement de titre.

Oui j'aimerais le faire dans cette cellule et qu'ensuite ça remplisse automatiquement le nom, prénom, téléphone..

Oui j'aimerais le faire dans cette cellule et qu'ensuite ça remplisse automatiquement le nom, prénom, téléphone..

C'est possible par formule si vous voulez mais vous pourriez aussi créer une userform qui recherche le nom aussi

Toutefois, le mieux serait de revoir la présentation de votre feuille 1 qui utilise des colonnes vides et lignes fusionnées

Votre avis sur ces points

J’ai créé le tableau avant de me lancer dans le VBA et de connaître les userform. Je vais refaire plusieurs userform donc un pour la recherche client.

si vous avez des pistes pour ne pas oublier de choses

Regarder votre fichier avec liste déroulante en B6 sans userform. Attention que la feuille 2 doit toujours être triée sur le nom.

Si vous voulez absolument le prenom, l'idéal serait d'ajouter une colonne Nom et prenom dans la feuil2. Cela peut se faire via un formule et vous récupérez le nom et prénom en B6 dans la liste déroulante

Je vais refaire plusieurs userform donc un pour la recherche client.

Attention à ne pas mettre trop d'userform, excel devient vite une usine à gaz... figer bien ce que vous voulez faire et quel est le but final.

Bonjour,

merci des coups de mains. Alors première question, comment avez vous fait pour mettre ce petit menu déroulant dans mon fichier excel? avec récupération des "noms" des clients? j'ai beau cherche je ne vois pas où est ce que vous êtes allés.

Seconde question ou plutôt explication: je pense qu'un userform serait pas mal. Le but de l'inscription de chaque clients est de me constituer une base de données des mes clients en cas de besoin de les contacter. Ensuite lorsqu'un client m'apporte son PC, j'aimerais que dans la case "client" il s'y inscrive automatiquement son nom et son prénom, puis dans la case téléphone son numéro de téléphone. le reste des infos @mail, adresse postale, code postale et ville ne serviront que si on a plusieurs clients avec le même nom et prénom afin de le différencier.

Bonjour

Alors première question, comment avez vous fait pour mettre ce petit menu déroulant dans mon fichier excel? avec récupération des "noms" des clients? j'ai beau cherche je ne vois pas où est ce que vous êtes allés.

- dans gestionnaire de noms, j'ai défini un nom "Listnom" sur base des noms en feuille2
- ensuite, on sélectionne B6 en feuille 1
- Allez dans le menu Données et dans la rubrique "Outils de données" sélectionnez l'icone "Validation de données".
- dans la rubrique Source vous y trouvez la formule adaptée

Le but de l'inscription de chaque clients est de me constituer une base de données des mes clients en cas de besoin de les contacter. Ensuite lorsqu'un client m'apporte son PC, j'aimerais que dans la case "client" il s'y inscrive automatiquement son nom et son prénom, puis dans la case téléphone son numéro de téléphone. le reste des infos @mail, adresse postale, code postale et ville ne serviront que si on a plusieurs clients avec le même nom et prénom afin de le différencier

Deux possibilités :
- On peut faire une userform de recherche et vous choisissez le client dans la liste. ce choix rapatrie les infos en feuille 1
- Plus simple : faire par formule sur base du choix en B6. Plusieurs clients ayant le même nom et prénom, là c'est un peu impossible ou très très rare. Par contre ce qui serait peut être intéressant c'est d'ajouter une colonne en feuille2 qui reprend le nom et prénom. Dans ce cas, on modifie la cellule B6 pour que vous y voyez le nom et prenom

Votre avis ?

Je serais plus d'avis d'avoir un bouton "Client" qui ouvre un userform dans lequel on saisit le nom du client par exemple "artemis", je tape "art" ca me propose tous les noms commençant par ART ainsi que leur prenom et adresse postale afin de pouvoir selectionner le bon client. Une fois le client sélectionné, ca reporte les infos dans ma feuill1 mais seulement les infos nom et prénom dans la case B6, numéro de téléphone en b7.

Je sais pas si je suis clair

Re

Votre fichier en retour pour test.
J'ai ajouté une userform pour la recherche.

Il vous suffit d'entrer ce que vous voulez trouver dans la rubrique Recherche. Le code vous montrera les données dans la listbox en dessous

Pour envoyer les données dans la feuille1 :
- Sélectionner dans la liste ce que vous voulez.
- double click sur la ligne choisie

Il reste deux petits rectangles Sacoche et chargeur, que vouliez vous faire ? Si ce sont des cases à cocher sachez que l'on peut faire cela sans mettre un objet rectangle mais utilisez un double click dans la cellule à coté mettre un X ou une case cochée

Wouahh c'est dingue comment ça parait simle!! gros merci à toi pour ce travial déjà!

En effet sacoche et chargeur si on peut faire en sorte que ce soit juste cochable en cliquant dessus ça serait top, et que ces deux cases se reset aussi lorsque je clique sur mon bouton "RESET" et une dernière chose après je pense que ça sera au top, est-il possible dans la casse Date de dépot d'y mettre la date automatiquement par rapport à la date du jour. Tous les matins j'allume le PC et j'ouvrirai mon ficheir excel, j'aiemrais que la date s'inscrive automatiquement dans cette cas.

Merci encore pour tout

1. En effet sacoche et chargeur si on peut faire en sorte que ce soit juste cochable en cliquant dessus ça serait top,

Pour les cases à cocher, on peut les placer en B11 et B12 :
- clique droite sur l'onglet Feuil1
- Choisir l'option "Visualiser le code
- dans la fenêtre coller le code ci-dessous

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("B11:B12")) Is Nothing Then
    With Target
        .Font.Name = "Wingdings 2"
        .Font.Size = 12
        If .FormulaR1C1 = "R" Then .FormulaR1C1 = "£" Else: .FormulaR1C1 = "R"
        .Offset(0, 1).Select
    End With
End If
End Sub

Pour que les cases apparaissent la première fois, vous cliquez en B11 et B12. Après elles seront toujours visibles. Pour cocher ou décocher, il suffit de cliquer sur B11 et / ou sur B12. On peut arranger aussi en cliquant sur A11 et / ou A12 si vous voulez vraiment mais cela me parait mieux sur B car on voit les cases à cocher à compléter

2. que ces deux cases se reset aussi lorsque je clique sur mon bouton "RESET"

- Aller dans l'editeur VBA
- cliquez sur Module 2 et remplacer le code par celui ci-dessous

Sub Reset_Fichiers()
' Reset_Fichiers Macro
' Cette macro permet de réinitialiser la fiche client.
' Touche de raccourci du clavier: Ctrl+r
'
With Feuil1
    .Range("B6:C7").ClearContents
    .Range("F6:G6").ClearContents
    .Range("B13:G13").ClearContents
    .Range("A17:G19").ClearContents
    .Range("B11:B12").FormulaR1C1 = "£"
End With
End Sub

3. La cellule date dépot, vous voulez simplement avoir la date à l'ouverture du fichier. Pour s'éviter de faire encore un code supplémentaire, on peut faire en sorte qu'elle se mette aussi lorsque vous cliquez dans la cellule comme pour les cases à cocher. Dites moi

Faite un test sur les points 1 et 2 pour voir si c'est ok pour vous

Je test ca

Alors je viens de faire le test, très bien pour les cases à cocher. Seul petit hic, quand je clique sur mon bouton "reset" ça m'efface complètement mes cases à cocher. Il faut que je reclique dans les cellules B11 et B12 pour qu'elles reviennent, et du coup elles reviennent cocher donc je doit encore cliquer pour les décochers et obtenir un fichier vierge.

Est il possible quand cliquant sur reset, les cases restent apparente mais vierge.

Merci

Pour la date j'ai régle le problème avec =AUJOURDHUI() dans la case F7

Seul petit hic, quand je clique sur mon bouton "reset" ça m'efface complètement mes cases à cocher.

Juste... désolé. Dans le code Reset, mettez des guillemets juste avant et après --> £ comme ceci --> "£"

J'ai corrigé dans le code posté avant

Et bien un GRAND GRAND merci! Vos conseils et vos fichier spropsés sont au top. Merci.

On ne sera pas sans se revoir puisque j'ai forcement oublié des choses.

Rechercher des sujets similaires à "projet base donnees client rediger fiche intervention"