VBA programmation Robot
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

VBA programmation Robot



  1. #1
    invite9bb97445

    Exclamation VBA programmation Robot


    ------

    Bonjour tout le monde ! Bon j'ai besoin de votre aide concernant un programme sur VBA ; J'ai ma base de données sur excel dans laquelle je dois chercher une valeur (il se peut que plusieurs cellules ont la même valeur) , et donc je dois avoir la plus proche .La photo ci dessous présente un exemple : en fait le X pointe sur la position d'un robot (qui peut se déplacer donc le x ne conserve pas la même cellule)!
    pour mieux expliquer :
    c'est l'utilisateur qui va entrer la valeur qu'il cherche, mais si la valeur recherchée existe dans plusieurs cellules il cherche la plus proche .
    dans ce cas , sur la photo la valeur 2 existe dans les cellules D6 , C4 , C8 et D9 et le x doit se déplacer vers D6 puisque c la plus proche .
    et les coordonnées de x doivent prendre les coordonnées de la nouvelle cellule .
    C'est bon jusqu'à maintenant ?
    Donc une fois il trouve la plus proche il va se diriger vers cette position et donc le x va prendre la nouvelle position .
    En fin je dois récupérer des coordonnées pour que mon robot puisse se déplacer comme quoi je dois associer aux cellules des coordonnées pour faciliter le déplacement du robot . Nom : excel.PNG
Affichages : 206
Taille : 28,8 Ko
    quelqu'un a une idée ??

    -----

  2. #2
    invite948b37db

    Re : VBA programmation Robot

    Bonjour

    Pour repérer la position de toutes les valeurs recherchées, je ne vois pas d'autre solution que de parcourir tout le tableau, colonne par colonne et à l'intérieur de chaque colonne, ligne par ligne.
    Quand une valeur est trouvée, on stocke ses coordonnées dans un array (tableau) à deux colonnes, une pour le n° de ligne, une autre pour le n° de colonne.
    On continue ainsi jusqu'à la fin du tableau.
    Ensuite et pour chaque paire de référence trouvée, on calcule la distance par soustraction :
    (num_ligne_valeur_cherchee - num_ligne_valeur_trouvee) *1
    (num_colonne_valeur_cherchee - num_colonne_valeur_trouvee) *1
    (on multiplie le résultat par 1 pour que tous les résultats soient positifs)

    Pour ce qui est d'associer des coordonnées aux références de cellules, cela ne me parait pas utile puisque ces références sont déjà des coordonnées dans un espace 2D. Il suffit de les convertir par une opération d'arithmétique

    Tu ne dis pas quel est ton niveau, tes capacités en VBA ?

  3. #3
    invite9bb97445

    Re : VBA programmation Robot

    Ouii effectivement j'ai pensé à récupérer les cellules dans un nouveau tableau et faire la soustraction ! J'ai des problèmes au niveau du langage de programmation , je suis débutante dans le VBA et donc je rencontre des problèmes au niveau du code ! j'ai commencé à écrire le code , je suis dans l'étape de récupération des données , et là je me bloque !
    Mais comment je peux convertir les cellules dans excel pour obtenir des coordonnées dans la réalité pour commander le robot pour se déplacer ??

  4. #4
    invite948b37db

    Re : VBA programmation Robot

    Citation Envoyé par Hajjouraa Voir le message
    je rencontre des problèmes au niveau du code ! j'ai commencé à écrire le code , je suis dans l'étape de récupération des données , et là je me bloque !
    Colle ton code ici et dis nous ce qui t'arrête
    Citation Envoyé par Hajjouraa Voir le message
    Mais comment je peux convertir les cellules dans excel pour obtenir des coordonnées dans la réalité pour commander le robot pour se déplacer ??
    Ton robot se déplace de X mètres en abscisse et de Y mètres en ordonnées non ? (l'unité peut être le mm ou le km, peu importe pour l'exemple)
    Si tu lis dans ton tableau qu'il doit aller 2 lignes plus bas et 3 colonnes à droite, tu convertis en :
    se déplacer en X de 2 mètres (2 lignes) et en Y de 3 mètres (3 colonnes)
    Je suis parti sur la base une ligne et une colonne valent chacune un mètre mais tu peux mettre à la place un coefficient

    Dans le 1er message, je t'ai dit à tort d'inverser les valeurs négatives. Garde-les, tu en auras besoin pour connaître le sens de déplacement

  5. A voir en vidéo sur Futura
  6. #5
    invite9bb97445

    Re : VBA programmation Robot

    Ouii justement ! Voilà j'ai commencé à écrire un code qui permet la recherche des cellules et la connaissance de leurs emplacements et je bloque là , j'ai pas une idée comment faire la récupération et le calcul de distance minimale .
    voici mon code :
    Code:
    "
    Sub recherchertout()
    
     Dim mot As Variant
    
     mot = InputBox("Entrez le texte", "Recherche du mot ou chiffre")
    
     Set c = Cells.Find(mot, LookIn:=xlValues)
    
     MsgBox c.Address, , "1ere Recherche " & mot
    
     k = k + 1
    
     If Not c Is Nothing Then
    
     firstAddress = c.Address
    
     Do
    
     k = k + 1
    
     Set c = Cells.FindNext(c)
    
     If c Is Nothing Or c.Address = firstAddress Then MsgBox "Fin des recherches ": Exit Sub
    
    
    
     MsgBox c.Address, , k & "ème Recherche"
    
     Loop While (Not c Is Nothing) And (c.Address <> firstAddress)
    
     End If
    
     End Sub"
    Dernière modification par JPL ; 28/03/2018 à 19h39. Motif: Ajout de la balise Code (#)

  7. #6
    invite948b37db

    Re : VBA programmation Robot

    Je ne dis pas que ton code est incorrect mais je ne le comprends pas. Moi, j'aurais d'abord sélectionné la 1ère cellule en haut à gauche du tableau puis fait une boucle sur toutes les cellules
    Code:
    Sub recherchertout()
           dim tableau_lignes() as integer 
           dim tableau_colonnes() as integer 
           Dim mot As Variant
           dim nb_valeurs_trouvees=integer
    
           mot = InputBox("Entrez le texte", "Recherche du mot ou chiffre")
           range("C3").select
           num_ligne_haut=activecell.row
           do while activecell.value <> ""
                 if activecell.value = mot then
                       nb_valeurs_trouvees=nb_valeurs_trouvees+1
                       redim preserve dim tableau_lignes(nb_valeurs_trouvees)  
                       redim preserve dim tableau_colonness(nb_valeurs_trouvees)
                       tableau_lignes(nb_valeurs_trouvees)=activecell.row
                       tableau_colonnes(nb_valeurs_trouvees)=activecell.column
                end if
                if activecell.offset(1,0).value <> "" then
                     activecell.offset(1,0).select
                end if
                if activecell.offset(1,0).value = "" and activecell.offset(0,-1).value <> "" then 
                     cells.offset(num_ligne_haut,activecell.column+1).select
                end if
        loop
    end sub
    normalement et à partir d'ici, on a localisé toute les cellules égales à la valeur saisie par l'opérateur
    Avant d'aller plus loin, il faudrait connaître la position du robot (valeur de X dans le tableau) ?

  8. #7
    invite9bb97445

    Re : VBA programmation Robot

    Ouii voilà ! Je dois récupérer la position de mon x (robot) puis voir la valeur la plus proche parmi les valeurs trouvées dans le tableau et le x doit se déplacer vers la valeur la plus proche . Voilà c'est ce que je cherche maintenant à faire.
    Mercii pour ton code mais en fait j'ai des problèmes de syntaxe je pense , il ne marche pas !

Discussions similaires

  1. [Programmation] Programmation robot arduino
    Par inviteaa3671f2 dans le forum Électronique
    Réponses: 1
    Dernier message: 14/03/2016, 09h35
  2. programmation arduino d'un robot de type curiosity
    Par inviteda8c3bed dans le forum Électronique
    Réponses: 3
    Dernier message: 08/05/2015, 13h03
  3. Besoin d'aide programmation robot
    Par invite9dde8d09 dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 02/02/2013, 12h31
  4. Programmation d'un robot pour les tpe
    Par invite2f39e858 dans le forum Électronique
    Réponses: 0
    Dernier message: 29/01/2012, 19h49
  5. Robot suiveur de ligne programmation picbasic
    Par invite03cf96f7 dans le forum Électronique
    Réponses: 5
    Dernier message: 18/12/2011, 17h41