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

Bonjour will1903, le fil,

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

En fait c'est un joli complément, merci d'avoir posé cette question.

Dans le fichier joint, si l'on clique sur le bouton Mémorisation des départements, on peut cliquer ensuite sur plusieurs départements.

La macro dans le code de la feuille Carte :

Code:
Private Sub CommandButton1_Click()
With CommandButton1
  If .Caption Like "Arr*" Then
    .Caption = "Mémorisation des départements"
    .BackColor = &HFF00& 'vert
    Filtre
  Else
    .Caption = "Arrêter la mémorisation"
    .BackColor = &H8080FF 'rose
  End If
  While .Caption Like "Arr*": DoEvents: Wend
End With
End Sub
Et dans ThisWorkbook, pour empêcher l'enregistrement ou la fermeture du fichier pendant la mémorisation :

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
With Sheets("Carte")
  If .CommandButton1.Caption Like "Arr*" Then
    Cancel = True
    .Activate
    MsgBox "Cliquer sur 'Arrêter la mémorisation'"
  End If
End With
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Sheets("Carte")
  If .CommandButton1.Caption Like "Arr*" Then
    Cancel = True
    .Activate
    MsgBox "Cliquer sur 'Arrêter la mémorisation'"
  End If
End With
End Sub
Edit : il y avait des petites imprécisions dans la macro Filtre.

A+
 

Pièces jointes

  • contacts multiselection(1).xls
    290.5 KB · Affichages: 164
Dernière édition:

will1903

XLDnaute Nouveau
Re : Carte interactive

Bonjour job75,

Je vois que tu t'es penché sur mon cas et je t'en remercie. Il est donc possible de choisir plusieurs départements mais le résultat n'est pas celui que j'attendais.

Exemple: si je choisi 59 et 62 le filtre me sort le transporteur qui fait du 59 et du 62
Ce que je souhaite: Je choisi 59 et 62. Et le filtre me sort les transporteur qui me font du 59 ou du 62 ou les 2

Voit si tu peut faire quelque chose sinon je garderai la version à un département.

Merci par avance
 

job75

XLDnaute Barbatruc
Re : Carte interactive

Re,

A partir de ma dernière version (sélections multiples) on devrait pouvoir en effet afficher une seule fois l'UserForm avec tous les contacts.

Et même, en évitant les doublons causés par exemple par '59 62'.

J'y avais bien pensé, mais c'est très lourd, il me semble, à programmer.

Et vu l'utilité réelle, on pourrait qualifier ça d'usine à gaz...

Je préfère donc en rester là, je pense que vous comprendrez.

A+
 

job75

XLDnaute Barbatruc
Re : Carte interactive

Bonjour will1903, le fil, le forum,

J'ai quand même essayé pour voir...

Et grâce à la fonction Union ça n'a rien d'une usine à gaz.

Et c'est bien plus élégant que la version précédente !!! :(

Voyez le fichier joint avec la macro Filtre :

Code:
Sub Filtre()
Dim dep As Range, plage1 As Range, plage2 As Range, txt$
Sheets("Carte").Activate
If [N6] = "" Then Set cel = [N6]
On Error Resume Next 'si Caller n'est pas une shape
  cel = Right(Application.Caller, 2)
  If Err = 0 Then Set cel = cel.Offset(1)
On Error GoTo 0
If [N6] = "" Or ActiveSheet.CommandButton1.Caption Like "Arr*" Then Exit Sub
For Each dep In Range("N6", cel)
  If dep = "" Then Exit For
  With Sheets("Base")
    .AutoFilterMode = False
    Set plage1 = .Range("G1", .[G65536].End(xlUp))
    plage1.AutoFilter 1, "*" & dep & "*"
    Set plage1 = plage1.SpecialCells(xlCellTypeVisible)
    .AutoFilterMode = False
  End With
  If plage1.Count > 1 Then _
    Set plage2 = Union(plage1, IIf(plage2 Is Nothing, plage1, plage2))
Next
With Sheets("Filtre")
  .[2:65536].Delete
  txt = Trim(Join(Application.Transpose(Range("N6", cel))))
  If plage2 Is Nothing Then MsgBox "Aucun contact en " & txt & "...": GoTo 1
  plage2.EntireRow.Copy .[A1]
  Set plage2 = .[B2:C2].Resize(plage2.Count - 1)
  plage2.Name = "Contacts"
End With
With UserForm1
  .Caption = "Contacts en " & txt
  .Height = 122.25
  .Show
End With
1 Range("N6", cel).ClearContents
End Sub
A+
 

Pièces jointes

  • contacts multiselection(2).zip
    140.7 KB · Affichages: 195

Dull

XLDnaute Barbatruc
Re : Carte interactive

Salut le Fil, Job:), JC:cool:, le Forum:):):)

Bonjour à tous,

Dommage que notre ami t'ai arrêté...
Tu nous aurais encore gratifié d'une proposition dont ton esprit brillant aurait eu une soudaine inspiration.

A++
A + à tous

Attends!!! je relance le débat :p

Heu...ilssontoùlesDOMTOM? :mad::p;)

Job j'apprécie énormément ta pugnacité et ton souci de la perfection :):):)

Bonne journée
 
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : Carte interactive

Bonjour à tous,

Juste pour être complet :

La France comprend également de nombreux territoires situés en-dehors du continent européen, couramment appelés territoires d’outre-mer, naguère DOM-TOM, qui lui permettent d’être présente dans tous les océans. Ces territoires aux statuts variés sont :



A++ et undeuxièmecitronvert
A + à tous
 
Dernière édition:

Fl0rent

XLDnaute Nouveau
Re : Carte interactive

Bonjour à tous,

D'habitude, une simple navigation sur le forum me suffit à trouver les réponses à mes questions et à adapter certains fichiers à mon utilisation. Mais aujourd'hui ce n'est pas le cas.
Pardon de déterrer ce post mais j'avoue que cela correspondrait parfaitement à mes attentes.
Néanmoins le fichier ne fonctionne pas sous Excel 2011 Mac. Sans doute un problème de compatibilité avec Visual Basic.
Y aurait-il un utilisateur Mac qui pourrait faire fonctionner ce fichier?

Merci par avance de vos réponses.

Cordialement.

Florent
 

job75

XLDnaute Barbatruc
Re : Carte interactive

Bonsoir Fl0rent, bienvenue sur XLD,

Dès qu'une macro sort un peu de l'ordinaire, il semble qu'il y a problème sur Mac 2011.

Par exemple sur ce fil je ne suis arrivé à rien pour Mac 2011 :

https://www.excel-downloads.com/thr...emble-de-tableaux-identiques-7-par-10.215759/

N'étant pas sur Mac je ne vois pas ce que je peux faire pour vous.

Le minimum serait de nous dire sur quelle(s) instruction(s) ça bloque.

A+
 

Discussions similaires

Réponses
29
Affichages
1 K