Vba géolocalisation simple

Glady994 Messages postés 530 Statut Membre -  
michel_m Messages postés 18903 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 ! :)

3 réponses

  1. Glady994 Messages postés 530 Statut Membre 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
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
    2. Glady994 Messages postés 530 Statut Membre 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
    3. Glady994 Messages postés 530 Statut Membre 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
  2. Glady994 Messages postés 530 Statut Membre 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
    1. Glady994 Messages postés 530 Statut Membre 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
  3. Glady994 Messages postés 530 Statut Membre 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
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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