formateur informatique

Créer et afficher les fiches clients aux clics

Accueil  >  Bureautique  >  Excel  >  Excel VBA  >  Créer et afficher les fiches clients aux clics
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Créer des fiches clients

Avec cette nouvelle astuce VBA Excel, nous allons apprendre à créer des fiches de renseignements sur les clients aux clics sur leurs références dans un tableau.

Créer des fiches clients à la volée au clic en VBA Excel

Sur l'exemple illustré par la capture, à partir d'un tableau des ventes réalisées par des clients, à chaque fois que l'utilisateur clique sur l'une des références clients en dernière colonne, une fiche est automatiquement construite sur la droite du clic. Cette fiche restitue l'intégralité des informations du client représenté par sa référence.

Classeur Excel à télécharger
Pour développer la technique, nous suggérons d'appuyer l'étude sur un classeur offrant ce tableau des ventes et cette "base de données" des clients.
  • Télécharger le fichier creer-des-fiches-clients.xlsm en cliquant sur ce lien,
  • Cliquer droit sur le fichier réceptionné,
  • En bas de la liste des propositions, choisir la commande Propriétés,
  • En bas de la boîte de dialogue, cocher la case Débloquer et valider par Ok,
  • Dès lors, double cliquer sur ce fichier pour l'ouvrir dans Excel,
En consultant la barre de navigation en bas de la fenêtre Excel, vous constatez que ce classeur est constitué de deux feuilles. Elles se nomment respectivement fichesClients et bdd.
  • Cliquer sur l'onglet bdd pour atteindre sa feuille,
Nous découvrons un petit tableau recensant des clients avec leurs informations attachées. En consultant la première colonne, vous remarquez qu'ils sont tous identifiés de façon unique avec un code référence.
  • En bas de la fenêtre Excel, cliquer sur l'onglet fichesClients pour revenir sur sa feuille,
  • Puis faire défiler l'affichage vers la droite jusqu'à visualiser les colonnes O et P,
Vous découvrez un petit tableau relatant toutes les informations d'un client en particulier.

Petit tableau Excel pour créer des fiches clients en VBA

Il fait partie de l'astuce à mettre en place. L'idée consiste à renseigner les cellules de ce tableau en fonction de la référence cliquée par l'utilisateur dans le tableau des ventes. Pour cela, le code VBA doit effectuer la recherche de cette référence dans la seconde feuille (bdd), pour restituer les données attachées.

C'est alors que nous dégainerons l'outil de l'appareil photo sur ce petit tableau d'extraction, pour tracer la zone de la fiche à reconstruire en regard de la feuille. L'appareil photo est un outil qui retranscrit fidèlement les informations d'une zone sélectionnée tout en les actualisant automatiquement lorsque des changements sont opérés.

Code VBA au clic
Pour commencer, c'est une procédure événementielle spéciale qui doit être implémentée. Elle doit déclencher son code VBA au clic sur l'une des cellules des références pour démarrer la recherche dans la feuille Bdd. Comme nous avons déjà largement abordé ces techniques dans d'autres formations, nous avons préparé cette procédure.
  • Revenir au début de la feuille fichesClients (CTRL + Home),
  • Réaliser le raccourci clavier ALT + F11 pour basculer dans l'éditeur VBA Excel,
C'est ainsi que nous découvrons la procédure événementielle Worksheet_SelectionChange. Son code se déclenchera au changement de sélection sur la feuille, donc au clic sur n'importe quelle cellule.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub


Vous notez la présence de l'argument nommé Target, typé comme un Range. Il représente la cellule cliquée au moment du changement de sélection.

Les variables
Nous avons besoin de deux variables. La première doit mémoriser la position de la référence trouvée dans le tableau de la feuille Bdd. Ce tableau porte un nom. Il s'agit du nom clients. Vous pouvez le constater en déployant la zone Nom en haut à gauche de la feuille Excel. Nous exploiterons ce nom pour simplifier la construction du code VBA. La seconde doit servir à parcourir les informations associées à la référence trouvée pour les restituer dans la fiche Client.
  • Dans les bornes de la procédure, ajouter les deux déclarations suivantes :
...
Dim pos As Byte: Dim i As Byte
...


Nous les typons toutes deux comme des entiers courts (Byte) ce qui sera largement suffisant pour le cas que nous avons à traiter.

Vérifier la cellule cliquée
Ensuite, il n'est pas nécessaire d'engager le traitement lorsque la case cliquée ne correspond pas à une cellule d'une référence en colonne D, soit en quatrième colonne de la première feuille. Ainsi, nous économiserons des ressources. ...
If Target.Column = 4 And Target.Count = 1 Then

End If
...


Grâce à la propriété Column de l'objet Target, nous vérifions que la cellule cliquée appartient bien à la colonne D (4). Dans le même temps (And), grâce à sa propriété Count, nous nous assurons qu'il ne s'agit pas d'une multi-sélection de cellules. Lorsque ces deux conditions sont remplies, alors (Then) nous engageons le traitement.

Position de la référence cliquée
Ensuite, pour trouver la position de la référence cliquée dans le tableau nommé clients, nous pouvons exploiter les fonctions de feuille de calcul Equiv et Index. Sachez néanmoins que dans sa version anglaise, la fonction Equiv se nomme Macth. En effet, nous sommes en train de coder en VBA.
  • Dans l'instruction conditionnelle, ajouter les lignes VBA suivantes :
...
pos = Application.Match(Target.Value, Application.Index([clients], , 1), 0)
If Not IsError(pos) Then

Else

End If
...


Grâce à l'objet Application, nous engageons la fonction Match (Equiv) à la recherche de la référence de la cellule cliquée (Target.Value). Cette recherche, nous la réalisons dans la première colonne du tableau clients, grâce à la fonction Index que nous faisons agir sur ce dernier ([clients]). Mais nous le restreignons à sa première colonne seulement. C'est le troisième paramètre réglé à 1 qui permet d'isoler cette première colonne, soit celle des références.

Cette position trouvée, nous la stockons dans la variable pos. Si cette recherche est fructueuse et donc qu'elle ne conduit pas à une erreur (If Not IsError(pos) Then), alors (Then) nous poursuivons le traitement. Le cas échéant (else), nous l'avorterons.

Construire la fiche d'identité
Désormais, nous devons parcourir les cellules de la fiche à reconstituer en colonne P, de la ligne 3 à la ligne 11. Une boucle For Next est donc tout à fait dédiée.
  • Dans la première branche de la nouvelle instruction conditionnelle, créer la boucle suivante :
...
If Not IsError(pos) Then
For i = 3 To 11
Cells(i, 16).Value = [clients].Cells(pos, i - 2)
Next i

Else

End If
...


Nous faisons donc varier la ligne de la troisième à la onzième (For i = 3 To 11). Grâce à ce traitement récursif dans la colonne P (16), nous les renseignons toutes tour à tour (Cells(i, 16).Value=), avec les informations attachées à la référence trouvée dans le tableau nommé clients ([clients].Cells(pos, i - 2)). Le réajustement de deux unités en colonne (i - 2), permet de suivre les colonnes de la plage clients en même temps que les lignes de la fiche à enrichir. Ces colonnes sont relatives à la plage nommée.

Création de la fiche
Même si le travail n'est pas encore terminé pour livrer la fiche d'identité en regard du clic utilisateur, nous pouvons déjà tester le code pour voir si les informations attenantes sont correctement restituées en colonne P de la première feuille.
  • Enregistrer les modifications (CTRL + S) et revenir sur la feuille Excel (ALT + Tab),
  • Puis, cliquer sur l'une des références en colonne D,
Désormais, si vous consultez le petit tableau sur la droite, vous avez le plaisir de constater que toutes les données attachées à la référence cliquée, sont parfaitement restituées.

Prendre une photo de la plage
Ce sont ces informations dont nous devons prendre un instantané avec l'appareil photo pour matérialiser la fiche d'identité qui doit venir s'offrir à proximité du clic utilisateur.
  • En haut de la fenêtre Excel, cliquer droit n'importe où sur le ruban actif,
  • Dans les propositions, choisir la commande Personnaliser le ruban,
  • Dans la boîte de dialogue, déployer la première liste déroulante,
  • Dans la liste, choisir la catégorie Toutes les commandes,
  • Par ordre alphabétique, sélectionner l'appareil photo,
  • Puis, le cliquer et le glisser dans une section d'un ruban existant,
Ajouter l-appareil photo dans un ruban Excel
  • Dès lors, cliquer sur le bouton Ok en bas de la boîte de dialogue,
  • Puis, activer le ruban dans lequel cet outil a été ajouté,
  • Sélectionner la plage de cellules O3:P11,
  • Cliquer sur le bouton de l'appareil photo pour prendre un instantané,
  • A droite du premier tableau, tracer une zone rectangulaire pour matérialiser la fiche,
  • Dans la zone Nom en haut à gauche de la feuille Excel, taper l'intitulé fiche,
  • Puis le valider par la touche Entrée du clavier,
Afficher la fiche client
C'est par ce nom que nous allons maintenant pouvoir piloter cette fiche client pour la positionner précisément à côté du clic utilisateur pour restituer toutes les informations de la personne concernée.
  • Revenir dans l'éditeur VBA Excel,
  • Avant la boucle, ajouter la ligne VBA suivante :
...
If Not IsError(pos) Then
ActiveSheet.Shapes("fiche").Visible= True
For i = 3 To 11
Cells(i, 16).Value = [clients].Cells(pos, i - 2)
Next i
Else
...


Grâce à la collection Shapes de la feuille active (ActiveSheet), nous désignons la zone graphique que nous venons de construire pour la rendre visible (Visible = True), lorsque la référence cliquée a été trouvée.
  • Juste après la boucle, ajouter les deux lignes VBA suivantes :
...
If Not IsError(pos) Then
ActiveSheet.Shapes("fiche").Visible = True
For i = 3 To 11
Cells(i, 16).Value = [clients].Cells(pos, i - 2)
Next i
Shapes("fiche").Left = Target.Offset(, 1).Left + 10
Shapes("fiche").Top = Target.Top

Else
...


Pour le positionnement à l'horizontale (Left), nous réalisons un décalage d'une colonne (Target.Offset(, 1)) par rapport au clic avec 10 points supplémentaires. Pour le placement à l'horizontale (Top), nous définissons une position identique à celle de la cellule cliquée en hauteur (Target.Top).

Enfin, dans le cas où la référence n'est pas trouvée, la fiche doit être masquée pour ne souffrir aucune ambiguïté.
  • Dans la branche Else de la seconde instruction conditionnelle, ajouter la ligne VBA suivante :
...
Shapes("fiche").Top = Target.Top
Else
ActiveSheet.Shapes("fiche").Visible = False
End If
End If
...
  • Enregistrer les modifications (CTRL + S) et basculer sur la feuille Excel (ALT + Tab),
  • Puis, cliquer tour à tour sur différentes références clients en colonne D,
Comme vous pouvez l'apprécier, à chaque clic, la fiche du client concerné est automatiquement générée et proposée à portée de la souris.

Créer des fiches clients aux clics de la souris en VBA Excel

Voilà donc une astuce très intéressante pour suggérer des informations complémentaires utiles et de façon très ergonomique.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn