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 :

mise à zéro de variables


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut mise à zéro de variables
    Bonjour,

    Je souhaitais savoir s'il est possible de mettre des variables automatiquement à zéro.

    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
    22
    23
    24
    25
    26
    27
    28
    29
    Dim résu(70,70,70)
    for i= 1 to 50
    For c1= 1 to 70
    For c2= 1 to 70
    For c3= 1 to 70
    ' Série de calcul
    if .....then r(c1,c2,c3,)=r(c1,c2,c3)+1
    next
    next
    next
    'recherche du maximum
    max=0
    For c1= 1 to 70
    For c2= 1 to 70
    For c3= 1 to 70
    if r(c1,c2,c3)>max then max = r(c1,c2,c3)
    next
    next
    next
    'Remise à zéro
    For c1= 1 to 70
    For c2= 1 to 70
    For c3= 1 to 70
    r(c1,c2,c3)=0
    next
    next
    next
     
    next
    On voit bien que ce code prend du temps : je fais 3 fois la boucle multiplié par 50 fois....: une fois pour le calcul, une fois pour la recherche du max et une fois pour la remise à zéro....

    Concernant la remise à zéro, il n'existe pas un code, une formule ou autre qui permettrait de tout remettre à zéro, sans passer par une boucle ?

    Des idées ?

    Merci,

    A+

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    as tu essayé
    NB : pas contre, il faut déclarer ta variable comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim résu ()
    Redim résu(70,70,70)

  3. #3
    Expert éminent 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
    Par défaut
    Je ne sais pas ce que ce code peut faire mais au moins veuille à indenter ton code.
    Sinon, un seul passage de tes boucles, ne te permet pas de faire ce que tu souhaiterais faire?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    For i = 1 To 50
        For c1 = 1 To 70
            For c2 = 1 To 70
                For c3 = 1 To 70
                    If xxx Then R(c1, c2, c3) = R(c1, c2, c3) + 1
                    If R(c1, c2, c3) > Max Then Max = R(c1, c2, c3)
                    R(c1, c2, c3) = 0
                Next c3
            Next c2
        Next c1
        Max = 0
    Next i

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Merci jfontaine,

    Je vais essayer......mais par contre dim r(70,70,70), je peux le mettre n'importe où dans le code ?

    Merci mercatog,

    En fait, je "m'amuse" avec le PMU : je combine des "pronostiques de la presse" : ils donnent 8 chevaux et donc, je cherche à combiner 3 pronostiqueurs et voir en combinant leurs pronostiques, quel est le trio qui donne le plus souvent les numéros sortants....Donc, effectivement, je peux prendre ta solution d'inclure le max dans la boucle, mais je ne peux pas faire dans la boucle.... : "i" est le nombre de dates => il faut que je fasse pour chaque date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    R(c1, c2, c3) = R(c1, c2, c3) +1
    . et donc à la fin je cherche le qui est le plus grand => le meilleur trio...
    D'ailleurs, grâce à vous, je viens de comprendre que j'avais mal positionné ma recherche de max...(comme j'ai fait mes essais avec 1 seule date, je ne m'étais pas aperçu de mon erreur....


    Merci,
    A+

  5. #5
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    mais par contre dim r(70,70,70), je peux le mettre n'importe où dans le code ?
    le redim peut etre positionner ou tu veux dans le code

    NB : le dim aussi, mais en VBA il est instancié au démarrage de la procédure, il est donc de convenance de le faire la déclaration en début de procédure)

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Merci jfontaine,

    j'ai mis juste après le et j'obtiens exactement ce que je voulais
    En plus, j'ai inclu mon max dans la boucle, donc j'ai énormément gagné en rapidité !!!

    Merci pour l'info sur le "Dim"

    A+ pour de prochaines aventures

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mise à zéro de variables saisies
    Par solorac dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/09/2010, 10h59
  2. problème de mise à jour des variables
    Par King_T dans le forum Langage
    Réponses: 8
    Dernier message: 26/03/2007, 16h43
  3. Réponses: 4
    Dernier message: 07/09/2006, 11h21
  4. Mise à zéro des variables
    Par tomtom187 dans le forum C++
    Réponses: 1
    Dernier message: 27/03/2006, 09h44
  5. Mise à zéro d'une table...
    Par SpyesX dans le forum Access
    Réponses: 3
    Dernier message: 02/11/2005, 15h28

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