IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Bouger plusieurs images en même temps


Sujet :

Macros et VBA Excel

  1. #21
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Je voudrais juste dire ceci :
    Lorsque j'étais un débutant (aucun forum n'existait) , je m'efforçais de sérier les problèmes et les traitais un par un.
    Qu'aurais-je à l'époque pensé et fait --->>
    j'aurais mis de côté l'aspect déplacement d'image pour me consacrer à la seule étude du mécanisme d'un "timer".
    Car il s'agit finalement de quoi, sinon d'exécuter un code à une fréquence déterminée ?
    Et pour simplifier encore, j'aurais commencé (dans un premier temps) par une seule action : l'avancement d'un compteur, par exemple, à l'aide de la méthode Ontime
    J'aurais fait dans un premier temps déclencher au clic d'un bouton, clic qui aurait appelé par la méthode Ontime, une procédure avançant de une unité ce compteur, procédure qui se serait rappelée elle-même jusqu'à obtenir la limite fixée pour ce compteur.
    Dans un second temps et en prévision d'une procédure plus complexe d'avancement de 2 compteurs, j'aurais (mais toujours avec un seul compteur)
    - déclaré une variable publique Go1 et :
    - au clic sur le bouton, j'aurais mis à True GO1 et appelé la procédure par ontime
    - au sein de ma procédure,
    ----- j'aurais écris que si GO1 = True, ma procédure se rappelait elle-même, sinon non
    ----- j'aurais mis GO1 à False dés que mon compteur aurait atteint la limite fixée
    Ah ! ceci étant maîtrisé (et seulement alors), j'aurais exercé mon "art" avec deux compteurs (et donc également deux booléennes : GO1 et GO2)
    Quelles modifications aurais-je apporté à ma procédure précédente ? --->>
    tout bête :
    - sortie de la procédure si à la fois G1 = False et GO2 = False
    - je n'aurais avancé chaque compteur, que si (pour le 1er) GO1 = true et si (pour le second) GO2 = true.
    Voilà. Commence par ce genre d'exercice salutaire. Le reste sera ensuite beaucoup moins ésotérique.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  2. #22
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Coucou Jacques,

    pour ce conseil très bien expliqué.
    Et ce, même avec un forum, c'est une méthode que j'utilise pour appréhender tout nouveau code que je ne connais pas afin d'en comprendre réellement le mécanisme
    ou vérifier un procéder imaginé par bout de code afin de prendre la bonne direction et faire un code complet
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  3. #23
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 927
    Points
    55 927
    Billets dans le blog
    131
    Par défaut
    Avec ou sans forum, la méthode préconisée par unparia est la seule valide à mon sens, et on nous l'apprend depuis qu'on est tout petit: Mettre un pied devant l'autre.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #24
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Mai 2017
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2017
    Messages : 27
    Points : 0
    Points
    0
    Par défaut
    Super merci beaucoup ! je vais suivre tes instructions, je n'avais pas vu le problème sous cet angle. Un grand merci unparia, et bien sur à tout ceux qui ont contribué! je code et je viens poster mon essais

  5. #25
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    En considérant le problème autrement avec comme données (pour chaque aéronef): un point de départ (Xi, Yi), un point d'arrivée (Xf, Yf), un temps de départ ti, une vitesse de vol constante V on peux déduire la position de l’aéronef (Xt, Yt) à l'instant t par: Xt=Xi+V.(t-Ti).Cos(phi) et Yt=Yi+V.(t-ti).Sin(Phi). Avec Tan(Phi)=(Yf-Yi)/(Xf-Xi).

    Si c'est pour la pédagogie qui ne prend pas en compte l'évolution en temps réel sur la journée, une simple boucle permet de "photographier" la position des différents aéronefs sur chaque pas de temps.

    Tant que NonArrivé
    Calcul de la position des aéronefs
    Affiche la position des aéronefs à l'instant i
    i=i+1
    Loop
    Exemple à titre pédagogique
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  6. #26
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Salut mercatog !

    Oui que ce soit via un pas ou par calcul de position temporelle   une simple boucle suffit …

    Si les objets ont les mêmes principes - le cas de nos démonstrations - leurs caractéristiques peuvent être chargées
    dans une variable tableau utilisée alors dans une seconde boucle interne à la principale, avant DoEvents,
    afin d'éviter une redondance d'instructions pour chaque objet …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  7. #27
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Mai 2017
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2017
    Messages : 27
    Points : 0
    Points
    0
    Par défaut
    Salut Mercatog.
    Je n'avais envisagé cela comme tu l'as fait. Mais c'est exactement ça le but de mon résultat final


    merci Marc pour l'indication de la variable tableau je creuse de ce côté comme tu me l'as suggéré

  8. #28
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Si tu es débutant, commencer par gérer un seul objet car ce qui compte c'est le mécanisme principal.
    Ensuite une fois que tu en auras géré deux, ce sera simple de voir le redondant
    afin de l'éviter via une seconde boucle sur une variable tableau par exemple,
    comme déjà proposé dans l'exercice du post #28 …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  9. #29
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Mai 2017
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2017
    Messages : 27
    Points : 0
    Points
    0
    Par défaut
    D'accord. Une question par rapport à Ti, mes horaires sont au format usuel c'est à dire hh:mm:ss. Comment dois-je l'adapter pour qu'il puisse rentrer dans la formule indiquée ci dessus ?

  10. #30
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Il suffit de faire un changement de variable Ti'=(Ti-minimum de tous les Ti)
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  11. #31
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Déjà définir une unité temporelle : la seconde, la minute, …
    Ensuite le premier mouvement, le premier horaire, sera le point temporel zéro.
    Donc une boucle sur l'unité temporelle du point zéro jusqu'au dernier mouvement exprimé à partir de ce point zéro.

    Exemple entre 7h et 23h30, cela fait une plage de 16h30 ou de 990 minutes, donc une boucle de 0 (7h) à 990 (23h30).

    Comme il est aussi possible de boucler directement au format date / horaire,
    c'est juste une question de respecter la logique selon l'unité temporelle …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  12. #32
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Mai 2017
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2017
    Messages : 27
    Points : 0
    Points
    0
    Par défaut
    Merci pour vos précisions. Je viens de me rendre compte Mercatog que les formules que tu as communiqué et bien en fait sans le savoir je les ai déjà appliquées à ma première ébauche. La ligne ratio dans ma feuille tableau correspond à ton tan(phi). Il ne me manquait que la variable temps non?

  13. #33
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bien sur pour l'application, il faudra d'abord "normaliser" les unités utilisée (Échelle adéquate sur les X et les Y entre ton cas réel et les coordonnées sur la zone d'affichage de ta feuille)

    Si tu travaille par une boucle, il faudra prendre l'heure minimale Hmin comme base (t=0) et pour chaque Heure Hi, la transformer en ti=Hi-Hmin. C'est simple, non?

    J'attendrai que tu aies commencé quelque chose pour te montrer le code basique que j'ai utilisé dans la gif précédente.

    Aussi, je rejoins Marc-L et unparia, que je salue, sur leurs recommandations de commencer par un cas basique: déplacer une figure d'un point A vers un point B que ce soit par une boucle que ce soit par Application.OnTime
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  14. #34
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Mai 2017
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2017
    Messages : 27
    Points : 0
    Points
    0
    Par défaut
    D'accord merci. Pour le cas basique j'arrive à faire bouger une image d'un point A un point B comme dit dans mon premier post. Certes c'est pas le code le plus efficace et il me manquait sûrement des informations, ce pour quoi je suis ici, mais cela avait le mérite de ce déplacer ! Je suis également arriver à lancer mon code via le .OnTime comme conseillé. J'essaye de structurer mon code comme tu le suggère. Une autre question ta variable "t" fais référence à quel référence temporelle ?

  15. #35
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    Comme il est aussi possible de boucler directement au format date / horaire
    A tester sur une feuille de calculs vierge :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Sub Pause(Optional P! = 0.01)
          D! = Timer:  F! = D + P:  DoEvents
         While Timer < F
            If Timer < D Then F = F - 86400: D = 0
         Wend
    End Sub
     
    Sub TestD()
          Dim D As Date
        With [D2]
            .Value = #5/27/2017 9:00:00 AM#
            .Columns.AutoFit
             Pause 0.5
        For D = .Value To #5/27/2017 10:00:01 AM# Step #12:01:00 AM#
            .Value = D
             Pause 0.5
        Next
             Pause 0.5
            .Clear
        End With
    End Sub
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  16. #36
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Mai 2017
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2017
    Messages : 27
    Points : 0
    Points
    0
    Par défaut
    je trouve un peu rapide le défilement des secondes non?

  17. #37
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    C'est un pas d'une minute pourtant visible dans le code pour un défilement sur une heure entre 9 et 10 heures,
    évidemment pas en temps réel sinon tu y serais encore !

    Le but de cette démonstration étant juste une boucle au format date / heure …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  18. #38
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Citation Envoyé par furye01 Voir le message
    Une autre question ta variable "t" fais référence à quel référence temporelle ?
    J'avais appris en cours de physique il y a des lustres qu'on devait utiliser le SI (Système international) dans la formule Xt=Xi+V*(t-ti)*Cos(phi)

    Distance en m
    Temps en s (à ne pas confondre avec l'heure): exemple j'ai un décollage à H1=07:10:00 et le second à H2=07:12:00, donc t1 sera 0s et t2=120s
    Vitesse en m/s

    Donc il faudra préalablement faire les transformation adéquates
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  19. #39
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Mai 2017
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2017
    Messages : 27
    Points : 0
    Points
    0
    Par défaut
    @Marc-L
    Oui en effet j'ai lu un peu trop vite et en regardant le résultat je n'ai pas fait attention. Merci pour ton exemple je pense qu'il pourra me resservir.

    @mercatog
    Pour les unités pas de soucis c'est comme cela que je comptais faire, c'est noté pour le t1=0 etc merci.

  20. #40
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour mercatog (je suis cette discussion avec intérêt et une certaine curiosité)
    il peut oublier les autres unités du SI et se contenter ici des seules du MKS
    Amitiés
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

Discussions similaires

  1. Réponses: 7
    Dernier message: 19/05/2016, 04h28
  2. Upload de plusieurs images en même temps
    Par cedrus dans le forum Langage
    Réponses: 5
    Dernier message: 17/03/2014, 12h13
  3. [Upload] Télécharger plusieurs images en même temps
    Par tarzanjane dans le forum Langage
    Réponses: 3
    Dernier message: 14/04/2009, 12h32
  4. télécharger plusieurs images en même temps
    Par batama dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 27/04/2006, 15h24
  5. Réponses: 9
    Dernier message: 17/04/2004, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo