Vba géolocalisation simple

Glady994 Messages postés 447 Date d'inscription   Statut Membre Dernière intervention   -  
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à vous Maitres du vba :p.

Bonjour ma question peut paraitre simple mais disons que j'ai quand même un peu du mal.
Tout d'abord voici la table excell sur laquelle je travaille, ( vous comprendrez surement mieux avec)

Je voudrait qu'avec un commande d'inputbox tel que celle-ci
Private Sub Cli()  
    Dim Cli As TextColumn2  
    Cli = InputBox("Numéro Client", "Géolocalisation", 1)  
Call Cli  
End Sub


On puisse entrer un num client et qu'il m'affiche alors l'adresse de celui ci dans une message box.



J'aurai vraiment besoin d'aide :).

Merci d'avance ! :)

A voir également:

3 réponses

Glady994 Messages postés 447 Date d'inscription   Statut Membre Dernière intervention   145
 
J'ai d'abord essayé de faire ceci :

Sub Cli() 
    Dim Cli As TextColumn2 
    Cli = InputBox("Numéro Client", "Géolocalisation", 1) 
Call Cli 

    If Target.Column = 1 And Target.Value <> "" Then 

        If Target.Value = Cli Then 
            Cells(Target.Row, 5) = v_adresse 
            Cells(Target.Row, 6) = v_cp 
            Cells(Target.Row, 7) = v_ville 
        End If 
         
    End If 
     
MsgBox (v_adresse + v_cp + v_ville, vbOKOnly,"Copier cette adresse dans google map") 
     

    
    Dim v_http As String 
    v_http = "https://www.google.fr/maps?f=q&hl=fr&q" 
    v_http = v_http & v_adresse & " ,+ " & v_cp & "+" & v_ville 

End Sub 



Mais evidemment ça ne fonctionne pas

J'ai alors essayé ceci
Sub Cli() 
    Dim Cli As TextColumn2 
    Cli = InputBox("Numéro Client", "Géolocalisation", 1) 
    Call Cli 

    Dim adresse As TextColumn2 
    Dim cp As Integer 
    Dim ville As TextColumn2 
     
    If Target.Column = 1 And Target.Value <> "" Then 

        If Target.Value = Cli Then 
            adresse = Cells(Target.Row, 5) 
            cp = Cells(Target.Row, 6) 
            ville = Cells(Target.Row, 7) 
        End If 
         
    End If 
     
MsgBox "v_adresse + v_cp + v_ville, vbOKOnly", vbOKOnly, "Copier cette adresse dans google map" 

End Sub 

Qui me semblait plus logique mais j'ai du mal à comprendre ce qu'il veut dire quand il me dit : "erreur d'execution 91 : Variable objet ou variable de bloc with non définie"

Pllz help me :(
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
pourquoi rappelles tu ta macro cli avec Call cli? pour boucler sans fin ?

si tu emploies comme nom de macro" cli", il est ambigu d'appeler une variable "cli"

Cli est le numéro du client mais cela ne te dit pas sur quelle ligne il est !

il te faut donc trouver cette ligne avec la fonction Find (voir l'aide)en testant avant si Cli existe bien dans la liste colonne A

Target n'a rien à voir dans ce type de macro (voir l'aide)

ensuite tu n'as pas besoin de regrouper adresse, codepostal et ville pour appeler googlemaps

exemple qui marche à partir de la macro de Johan Sorel -on cite TOUJOURS la source des macros dont on est pas l'auteur -

Sub se_situer() 
 'D'après Johann Sorel https://jsorel.developpez.com/tutoriels/sig/googlemaps1/ 
 Dim adresse As String, codpost As String, ville As String 
 Dim lien As String 
  
 adresse = Range("B2") 
 codpost = Format(Range("B3"), "00000") 
 ville = Range("B4") 
  
lien = "https://www.google.fr/maps?f=q&hl=fr&q" _ 
            & adresse & " ,+ " & codpost & "+" & ville 
                                 
    On Error GoTo erreur 
        ThisWorkbook.FollowHyperlink (lien) 
    Exit Sub 

erreur: 
    MsgBox "Impossible de se connecter à GoogleMaps" 
     
 End Sub


Pour apprendre des bases solides sur VBA plutôt que de faire çà à l'inspiration (pour ne pas dire au pif)
https://bidou.developpez.com/article/VBA/
0
Glady994 Messages postés 447 Date d'inscription   Statut Membre Dernière intervention   145
 
Merci, je ne fais pas au pif, j'y connais rien mais on doit faire un travail donc bien obligé d'apprendre sur le tas...
Merci pour tes conseils donc, je vais tester tout ça et je vous tient au jus :).
0
Glady994 Messages postés 447 Date d'inscription   Statut Membre Dernière intervention   145
 
EDIT : je viens de voir que j'avais mis la variable "cli" a la place la la ligne, effectivement n'importe quoi mais ça c'est la fatigue ^^.
0
Glady994 Messages postés 447 Date d'inscription   Statut Membre Dernière intervention   145
 
J'ai donc changé de code et j'arrive à quelque chose de mieux grâce à Michel_m.

Le problème c'est que j'aimerai que l'utilisateur puisse décider de cette ligne grâce à une input box j'ai donc fait ceci
Sub Cli()
    Dim Ent As TextFrame
    Ent = InputBox("Numéro ligne Client", "Géolocalisation", 1)

End Sub

Sub se_situer()

    Dim adresse As String, codpost As String, ville As String
    Dim lien As String
    
  
        adresse = ActiveSheet.Range("D" & Ent).Value
        codpost = Format(ActiveSheet.Range("E" & Ent).Value, "0000")
        ville = ActiveSheet.Range("F" & Ent).Value
  
        lien = "https://www.google.fr/maps?f=q&hl=fr&q" & adresse & " ,+ " & codpost & "+" & ville
                                 
    On Error GoTo erreur
        ThisWorkbook.FollowHyperlink (lien)
    Exit Sub

erreur:
    MsgBox "Impossible de se connecter à GoogleMaps"
     
 End Sub


Mais il me dit toujours "erreur d'execution 91 : Variable objet ou variable de bloc with non définie" donc je crois que je ne comprend pas un truc et ça devient quelque peu énervant :)...
Si quelqu'un peut m'aider? :'(
0
Glady994 Messages postés 447 Date d'inscription   Statut Membre Dernière intervention   145
 
Pour ceux que ça intéresse, je devais simplement utiliser "Ent" comme "Integer " et nom comme "textframe" ^^
Voilà à force de me perdre dans le code j'arrivais même plus à voir les erreur.

Merci à ceux qui se seront penché sur le problème ^^.
0
Glady994 Messages postés 447 Date d'inscription   Statut Membre Dernière intervention   145
 
Voilà mon code actuel
Sub Cli()
    Dim Ent As Integer
    Ent = InputBox("Numéro ligne Client dans Excell", "Géolocalisation", 2)

    Dim adresse As String, codepostal As String, nomville As String
    Dim lien As String
    
  
        adresse = ActiveSheet.Range("D" & Ent).Value
        codepostal = Format(ActiveSheet.Range("E" & Ent).Value, "0000")
        nomville = ActiveSheet.Range("F" & Ent).Value
  
        lien = "https://www.google.fr/maps?f=q&hl=fr&q" & adresse & " ,+ " & codepostal & "+" & nomville
                                 
    On Error GoTo erreur
        ThisWorkbook.FollowHyperlink (lien)
    Exit Sub

erreur:
    MsgBox "Impossible de se connecter à GoogleMaps"
     
 End Sub


Et voilà la table excell : http://img15.hostingpics.net/pics/420459Sanstitre1.png

Maintenant je voudrait que le chiffre inscrit dans l'inputbox soit l'ID client et non le numéro de la ligne. Mais que le programme en resorte quand même l'adresse?
Est-ce possible facilement? Comment saisir la valeur contenue dans une case et en sortir la ligne dans laquelle celle-ci est contenue?
Je suis un peu largué, quelqu'un aurait une idée ?

Merci d'avance !!!!
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour,
Pourtant, je t'avais bien fait remarqué que l'on citait TOUJOURS ses sources, à savoir Johan Sorel. comme tu t'en moques, aucune raison de t'aider
D'autre part, je t'ai signalé que pour trouver la ligne, il fallait utiliser la fonction FIND et je t'ai conseillé de voir l'aide FIND ; là aussi aucune raison de t'aider
0