Ce module permet d’enregistrer un nouveau contact, de le rechercher par N° ou par nom et de pouvoir aussi le modifier.
Description de la demande : J’ai parcouru un grand nombre de sites spécialisés concernant les modules de travail (gestion clients et fichiers) mais aucun ne me convient, soit par les contraintes d’utilisation soit par le prix exubérant. J’ai créé un processus simple et adapté que je voudrais articuler avec le VBA sur EXCEL.
Elle n’est sûrement pas parfaite dans sa forme actuelle et accusera toutes les modifications nécessaires. Ceci étant, mon objectif global (un recul de 12 années sur les fonctionnements internes de ma profession) est de rationaliser les processus et notamment éviter d’entrer plusieurs fois les mêmes données clients qui me sont utiles. Lorsque je pourrai enfin disposer de mon module, je mettrai en relation toutes mes fiches d’interventions (Excel) avec le répertoire créé (qui comporte presque 2000 clients actuel) en augmentation régulière.
Cahier des charges : Le fichier Excel sera composé de 3 feuilles : La feuille MENU, ENTREES et REPERTOIRE.
La première page (MENU) doit permettre l’accès à la création d’un nouveau contact par la saisie de 8 chiffres qui renvoient à la seconde feuille (ENTREES) afin d’y saisir les données complètes du contact. Les 8 chiffres composeront la référence du contact ou client. La page (MENU) doit également donner la possibilité de rechercher et donc d’afficher la fiche d’un contact en saisissant soit un numéro soit un nom. Cette fiche de contact (ENTREES) doit alors s’afficher. Cette dernière sera composée de 18 champs (Date, Nom, Prénom,…) : 16 d’entre eux seront des champs de saisie et 2 seront composés de listes de choix (Titre et nature du contact). Sur cette feuille (ENTREES) doit apparaitre un bouton permettant l’enregistrement des données du contact. Les données doivent évidemment restées modifiables. Dés enregistrement des données, ces dernières sont reprises automatiquement dans la feuille REPERTOIRE.
Il faut empêcher que 2 contacts aient la même référence client et empêcher l’enregistrement plusieurs fois d’un même contact.
Réponse du prestataire : La première difficulté consiste à créer les listes de choix voici comment transformer des champs en liste de choix : Il faudra définir tout d’abord une feuille où se trouveront toutes les listes voulues.
Puis vous allez à l’emplacement où vous souhaitez diffuser cette liste. Sélectionnez ensuite la cellule correspondante et allez dans le menu Données, cliquer ensuite sur validation des données puis dans critères de validation, choisissez liste et enfin dans la zone source, sélectionnez la liste que vous voulez faire apparaitre.
Elle devrait ainsi apparaitre lorsque vous cliquez sur la cellule.
Les autres points nécessiteront des connaissances en VBA: Voici quelques-unes des formules nécessaires au fonctionnement de votre fichier Excel
Le reste est une maitrise des boucles WHILE (Tant que ceci = cela répéter ça) et des conditions IF (si ceci = cela alors ...)
Une fonction qui vous sera bien utile pour exécuter une action lorsqu'une condition est rempli sur une feuille (En réponse à : 8 nouveaux chiffres déclenche l’accès à la feuille ENTREES) :
-Worksheet_Change(ByVal Target As Range)
Tester la condition :
-If Len(Target.Value) = "8" Then
Ceci vous permettra d'activer une feuille du classeur et de sélectionner une cellule précise sur cette feuille :
-Worksheets("ENTREES").Activate
-Range("B6").Select
Cette fonction vous donnera la valeur d'une cellule :
-Sheets("REPERTOIRE").Cells(Num_Ligne, colonne).Value
Ceci vous permet de copier son contenu (avec "Paste" vous pouvez la coller) :
-Sheets("REPERTOIRE").Cells(Num_Ligne, colonne).Copy
Cette fonction vous permettra de rechercher par mis une plage de cellules, une chaine de caractères,
et d'obtenir la ligne correspondante
-Sheets("REPERTOIRE").Range("B:B").Find(ChaineRech).Row
Il est aussi possible de transposé les données de façon à copier une colonne et de coller le contenu sur une ligne :
-Sheets("ENTREES").Range("B6:B21").Copy
-Sheets("REPERTOIRE").Range("C" & NoClient & ":R" & NoClient).PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Réponse du client : Acceptez milles remerciements pour le temps que vous avez accordé à l’étude de ma demande et la rapidité de votre réponse, plus que satisfaisante.
Mes connaissances en VBA sont balbutiantes cependant, entre la pertinence de votre réponse et les différents "tutos" que j'ai trouvés dans ce domaine, je devrai parvenir à obtenir un résultat.
Même si ma satisfaction finale s’avère mitigée, je reste persuadé que se familiariser avec ces connaissances apporte plus de gain que de temps perdu....
Je vous réitère toute ma gratitude pour votre altruisme.