Vba géolocalisation simple

Fermé
Glady994 Messages postés 447 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 31 mars 2017 - Modifié par Glady994 le 20/12/2011 à 18:36
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 21 déc. 2011 à 07:58
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 jeudi 24 décembre 2009 Statut Membre Dernière intervention 31 mars 2017 145
Modifié par Glady994 le 20/12/2011 à 18:46
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 20/12/2011 à 19:05
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 jeudi 24 décembre 2009 Statut Membre Dernière intervention 31 mars 2017 145
20 déc. 2011 à 20:56
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 jeudi 24 décembre 2009 Statut Membre Dernière intervention 31 mars 2017 145
20 déc. 2011 à 21:03
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 jeudi 24 décembre 2009 Statut Membre Dernière intervention 31 mars 2017 145
20 déc. 2011 à 21:19
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 jeudi 24 décembre 2009 Statut Membre Dernière intervention 31 mars 2017 145
20 déc. 2011 à 21:47
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 jeudi 24 décembre 2009 Statut Membre Dernière intervention 31 mars 2017 145
20 déc. 2011 à 22:15
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
21 déc. 2011 à 07:58
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