Carte interactive

will1903

XLDnaute Nouveau
Bonjour,

je souhaite créer un outil excel pour mon boulot. Cet outil consiste à retrouver une liste de contactes dans une base de données à partir d'une carte de France. En effet quand je clique sur le département 62 (par exemple), je souhaite que excel me sorte la liste des contacts qui ont le département 62 dans les données.

1ère chose: Suis-je clair?
2ème: Si oui comment faut-il faire?
 

Pièces jointes

  • contacts.xlsx
    36.9 KB · Affichages: 404
  • contacts.xlsx
    36.9 KB · Affichages: 438
  • contacts.xlsx
    36.9 KB · Affichages: 465

job75

XLDnaute Barbatruc
Re : Carte interactive

Bonsoir will1903,

Ce que vous voulez faire est très facile en utilisant le filtre automatique.

- appliquer le filtre sur la colonne F

- cliquer sur la flèche du filtre et allez sur Filtre personnalisé

- pour le critère "est égal à" entrer *59*

Vous obtenez ainsi les lignes du département 59 (bienvenue chez les ch'ti).

Edit : autant filtrer d'ailleurs avec contient => 59

A+
 

Pièces jointes

  • contacts(1).xls
    51 KB · Affichages: 344
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re : Carte interactive

Bonsoir,

Ton fichier, en l'état, n'est pas exploitable, pour un clic, car c'est un dessin, et les départements ne sont pas sélectionnables individuellement....

J'ai retrouvé un vieux fichier (de 2005, je crois), avec lequel on peut travailler.

J'ai laissé tous les codes initiaux (en cliquant sur un département, tu obtiens son nom, le colore, et colore la région...)

Tu peux choisir le département dans le menu déroulant, en bas à droite

Sinon, il te faudra un peu de travail, afin de rajouter les numéros de départements sur la carte....

Un premier jet : En cliquant sur le département 59 (par exemple), tu as une extraction de tes contacts à droite de l'onglet..

Bonne soirée

Edit : Hi, Job, bien le bonjour :D
 

Pièces jointes

  • Carte_France_will.zip
    53.6 KB · Affichages: 847
Dernière édition:

job75

XLDnaute Barbatruc
Re : Carte interactive

Bonjour le fil, le forum,

Sans trop se casser la tête (mais bonjour la souris) on peut créer 96 Shapes dont le nom contient le numéro du département.

Exemple : Ellipse 01

On peut leur affecter cette macro :

Code:
Sub Filtre()
Dim dep$, plage As Range
dep = Right(Application.Caller, 2)
With Sheets("Base")
  .AutoFilterMode = False
  Set plage = .Range("F1", .[F65536].End(xlUp))
  plage.AutoFilter 1, "*" & dep & "*"
  If plage.SpecialCells(xlCellTypeVisible).Count = 1 Then
    MsgBox "Aucun contact..."
    .AutoFilterMode = False
    Exit Sub
  End If
  .Activate
End With
End Sub
Fichier (2).

A+
 

Pièces jointes

  • contacts(2).xls
    263.5 KB · Affichages: 297

job75

XLDnaute Barbatruc
Re : Carte interactive

Re,

Fichier (4) avec un UserForm :

Code:
Sub Filtre()
Dim dep$, plage As Range
dep = Right(Application.Caller, 2)
With Sheets("Base")
  .AutoFilterMode = False
  Set plage = .Range("F1", .[F65536].End(xlUp))
  plage.AutoFilter 1, "*" & dep & "*"
  Set plage = plage.SpecialCells(xlCellTypeVisible)
  If plage.Count = 1 Then
    MsgBox "Aucun contact..."
    .AutoFilterMode = False
    Exit Sub
  End If
End With
plage.EntireRow.Copy Sheets("Feuil3").[A1]
Set plage = Sheets("Feuil3").[A2:F2].Resize(plage.Count - 1)
ThisWorkbook.Names.Add "Contacts", plage
UserForm1.Caption = "Contacts département " & dep
UserForm1.Show
End Sub
La RowSource de la ListBox est le nom défini Contacts.

Edit : c'est mieux avec les en-têtes de colonnes...

A+
 

Pièces jointes

  • contacts(4).xls
    270 KB · Affichages: 229
Dernière édition:

job75

XLDnaute Barbatruc
Re : Carte interactive

Re,

Avec cette histoire de main sur l'image (post #6), j'ai pédalé dans la choucroute.

En fait il est bien mieux de protéger la feuille en décochant l'option "Modifier les objets".

En plus, j'ai décoché les options de sélection des cellules.

Fichier (5).

A+
 

Pièces jointes

  • contacts(5).xls
    269.5 KB · Affichages: 188

job75

XLDnaute Barbatruc
Re : Carte interactive

Bonjour le fil, le forum,

Une variante avec seulement 2 colonnes dans la ListBox.

Le clic sur une ligne permet de voir toutes les informations.

Le code de l'UserForm :

Code:
Private Sub ListBox1_Click()
Dim lig&
Application.Wait Now + 1 / 86400 'facultatif...
lig = ListBox1.ListIndex + 2
Unload Me
With Sheets("Filtre")
  .Rows.Hidden = False
  [Contacts].EntireRow.Hidden = True
  .Rows(lig).Hidden = False
  .Activate
End With
End Sub

Nota : j'ai un peu amélioré la macro Filtre...

A+
 

Pièces jointes

  • contacts(6).xls
    276.5 KB · Affichages: 199

job75

XLDnaute Barbatruc
Re : Carte interactive

Re,

Bien sûr on peut tout faire dans l'UserForm avec ces macros :

Code:
Private Sub Label1_Click()
ListBox1.ListIndex = -1
Me.Height = 122.25
End Sub

Private Sub ListBox1_Click()
Dim lig&
lig = ListBox1.ListIndex + 2
Me.Height = 287
With Sheets("Filtre")
  TextBox1 = .Cells(lig, 3)
  TextBox2 = .Cells(lig, 4)
  TextBox3 = .Cells(lig, 5)
  TextBox4 = .Cells(lig, 6)
End With
End Sub
On s'amuse comme on peut :)

A+
 

Pièces jointes

  • contacts(7).xls
    273 KB · Affichages: 193

job75

XLDnaute Barbatruc
Re : Carte interactive

Re,

On continue, en l'absence de toute réaction de l'intéressé :mad:

Si l'on veut profiter de l'affichage des informations pour les modifier dans la base.

Le mieux est alors de repérer les numéros de lignes filtrées, le repère en colonne A.

La macro du bouton "Modifier la base" :

Code:
Private Sub CommandButton1_Click() 'Modifier la base
Dim lig&
lig = ListBox1.ListIndex + 2
With Sheets("Filtre")
  .Cells(lig, 4) = TextBox1
  .Cells(lig, 5) = TextBox2
  .Cells(lig, 6) = TextBox3
  .Cells(lig, 7) = TextBox4
  lig = .Cells(lig, 1) 'Repère
End With
With Sheets("Base")
  .Cells(lig, 4) = TextBox1
  .Cells(lig, 5) = TextBox2
  .Cells(lig, 6) = TextBox3
  .Cells(lig, 7) = TextBox4
End With
MsgBox "Ligne " & lig & " modifiée dans la base..."
End Sub
Fichier (8).

A+
 

Pièces jointes

  • contacts(8).xls
    279.5 KB · Affichages: 393
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : Carte interactive

Bonjour à tous,
Salut Job :),

Je ne vois pas comment modifier ton code pour permettre un seul département par contact...

Je ne sais pas pour notre ami demandeur mais cela me convient parfaitement.

A++ l'ami
A+ à tous
 

will1903

XLDnaute Nouveau
Re : Carte interactive

Bonjour Job75

Je te remercie pour le bon boulot que tu as fait. C'est vrai que je ne me suis pas cassé la tête car je savais que cela n'était pas dans mes compétences. j'ai préféré laisser le boulot aux experts. Et puis je n'ai pas trop le temps pour me mettre à fond dans du excel. C'est pour ça que je me reconnecte seulement aujourd'hui.

Une derniere question...Est ce possible de séléctionner plusieurs départements à la fois???

Merci par avance.
 

job75

XLDnaute Barbatruc
Re : Carte interactive

Re,

@ JCGL : si l'on veut pouvoir entrer un seul département sur un contact, mettre la colonne Départements au format Texte.

@ will1903 : on ne peut cliquer que sur une shape à la fois, donc avec cette solution, pas possible de "sélectionner" plusieurs départements.

Merci à DoubleZero, JC, Victor et piga25 pour tous ces Likes, ça me fait très plaisir :)

A+
 

Discussions similaires

Réponses
29
Affichages
1 K

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T