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 :

[VBA-Excel] affecter la valeur infinie à une variable


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 574
    Points : 258
    Points
    258
    Par défaut [VBA-Excel] affecter la valeur infinie à une variable
    Bonjour,

    Je souhaiterais comme le titre l'indique affecter la "valeur" infinie à une variable.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim valeur_min as double
    valeur_min = '?????? L'infinie
    Ensuite, comme je cherche la valeur min d'une colonne excel je peux ensuite faire ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If cells(i,3)<valeur_min then
         valeur_min=cells(i,3)
    End if
    Je pourrais très bien poser dès le départ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    valeur_min=cells(1,3)
    puis comparer ensuite, mais ùmon problème, c'est que je ne compare pas forcément à partir de la ligne 1.

    Par exemple, j'arrive à une ligne i ou ma désignation est "A"
    A partir de cette ligne, je fais un test à partir de i de manière à trouver désignation="B" des lignes suivnates et je récupère le min associé.

    Si quelqu'un peut m'aider.

    Merci d'avance

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    évidemment on ne peut pas représenter l'infini en informatique en tant que grandeur
    par contre tous les types de données ont une valeur maximale
    par exemple le double vaut 1.7e308
    c'est à dire 1.7 *10 suivui de 307 zéros
    c'est évidemment pas l'infini
    mais si tu poses mavar=10^307 il va être difficile de trouver des grandeurs
    plus grandes
    Elle est pas belle la vie ?

  3. #3
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 156
    Points : 105
    Points
    105
    Par défaut
    Bonjour

    On peut rechercher la valeur min d'une colonne à l'aide d'une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim debut As Integer, fin As Integer, col As Integer, va As Double, ic As Integer
    ' déclaration à mettre en début de module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A2").Value = mini(4, 29, 2)
    'Exemple d'utilisation de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function mini(debut, fin, col)
     
    Cells(debut, col).Select
    va = 1000000
    For ic = debut To fin
    If ActiveCell.Value < va Then
    va = ActiveCell.Value
    End If
    ActiveCell.Offset(1, 0).Select
    Next ic
    mini = va
     
    End Function
    Cette fonction recherche la valeur minimale d'une colonne "col", à partir de la ligne "debut" jusqu'à "fin"
    Dans l'exemple, on recherche la valeur minimale à partir de la ligne 4 jusqu'à la ligne 29 dans la colonne B, et on la place dans la cellule A2.
    Dans l'exemple, j'ai choisi une valeur va < 1 million, mais on peut aller jusqu'à 10^308

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par marsupilami34
    Bonjour,

    Je souhaiterais comme le titre l'indique affecter la "valeur" infinie à une variable....
    Citation Envoyé par Lexot2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ....
    va = 1000000
    For ic = debut To fin
    ...
    ...
    eu... Lexot2.. tu n'as pas l'impression que le marsup.. il le connai déjà ton code..? 1000000 ..? = infini..?

    sinon pour ton probléme marsup... voici une adaptation du code à lexot2.. qui utilise la premiére valeur testée pour initialiser la variable de test, utilise ce principe dans ton code ..:
    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
     
    Function mini(debut, fin, col)
    dim va as double
     
    For ic = debut To fin
    if ic = debut then
      va = Cells(ic,Col).value
    endif
    If Cells(ic,Col).Value < va Then
    va = ActiveCell.Value
    End If
    Next ic
    mini = va
     
    End Function

  5. #5
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 156
    Points : 105
    Points
    105
    Par défaut
    Bonsoir

    Merci bbil pour l'amélioration de mon code. Depuis ma venue dans ce forum, je sais que "select" et "activate" ne sont pas les bienvenues dans les procédures vba. Mais je ne suis qu'un autodidacte, et j'ai appris le vba-e avec l'enregistreur de macro, les tutoriels et les livres.

    Je ne prétends pas être un expert, mais c'est avec une grande satisfaction que je constate la validité de mes codes, même si y on ajouterait la mention "perfectible".

    Pour terminer, je suppose que tu as lu mon message avec un filtre qui a rendue cette phrase indécelable, comme s'il s'agissait de l'encre sympathique.
    Dans l'exemple, j'ai choisi une valeur va < 1 million, mais on peut aller jusqu'à 10^308
    Cordialement

  6. #6
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 156
    Points : 105
    Points
    105
    Par défaut
    Rebonsoir

    Dans le but de simplifier davantage le code proposé par bbil, j'ai écrit ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function mini(debut, fin, col)
     
    va = Cells(debut, col).Value
    For ic = debut To fin
        If Cells(ic, col).Value < va Then
            va = Cells(ic, col).Value
        End If
    Next ic
    mini = va
     
    End Function
    Aucune valeur référence n'est nécessaire, ni 1000000, ni 10^308, ni l'infini

    Cordialement

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

Discussions similaires

  1. [excel] inserer la valeur d'une variable dans un commentaire
    Par loic_ dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/11/2006, 15h02
  2. Réponses: 4
    Dernier message: 06/09/2006, 14h50
  3. Réponses: 2
    Dernier message: 06/09/2006, 14h27
  4. VBA-Excel copier la valeur d'une textbox dans une cellule
    Par GrandGarfield dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/08/2006, 10h15
  5. vba-Excel-Plus grande valeur d'une colonne
    Par VBBBA dans le forum Macros et VBA Excel
    Réponses: 33
    Dernier message: 08/08/2006, 10h50

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