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 :

probleme de boucle for


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 96
    Points : 56
    Points
    56
    Par défaut probleme de boucle for
    ca tourne en rond et puis j'ai le programme ne repond pas
    voici le 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Function calculeDomaineTester()
    'declarations
    Dim cellule As Integer
    Dim c As String
    Dim compteur As String
     
    Dim resultat As Integer
    Dim i As Integer
    Dim j As Integer
     
     
    'recuperation de la cellule à remplir stocker en z1
    cellule = ActiveSheet.Cells.Range("Z1").Value
    c = "C" & ""
    c = "C" & cellule
     
    'calcul du minimum
    resultat = ActiveSheet.Cells.Range("C8").Value
    j = cellule - 2
    For i = 9 To cellule Step Pas 'pour toutes les lignes
    compteur = "C" & ""
    compteur = "C" & i 'on se positionne sur la cellule a tester
       If ActiveSheet.Cells.Range(compteur).Value < resultat Then 'si il est plus petit
            resultat = ActiveSheet.Cells.Range(compteur).Value 'alors on remplace le resultat par la valeur de la cellule testée
         End If
    Next
    'affichage du minimum dans la cellule
    ActiveSheet.Cells.Range(c).Value = resultat
     
     
    End Function
    en gros je recupere dans la cellule Z1, un n° de ligne et je dois ensuite calculer le minimum de la case C8 à la case C(Z1-2) et l'afficher dans C(Z1)

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 93
    Points : 73
    Points
    73
    Par défaut
    Bonjour, j'ai effectue une trace en debug (F8) et il se trouve que i n'est pas incremente dans la boucle For.

    juste enlever step pas suffit chex moi pour que cela marche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For i = 9 To cellule 'pour toutes les lignes
    compteur = "C" & ""
    compteur = "C" & i 'on se positionne sur la cellule a tester
       If ActiveSheet.Cells.Range(compteur).Value < resultat Then 'si il est plus petit
            resultat = ActiveSheet.Cells.Range(compteur).Value 'alors on remplace le resultat par la valeur de la cellule testée
         End If
    Next
    @ +

  3. #3
    Membre averti Avatar de mordrhim
    Inscrit en
    Avril 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 270
    Points : 314
    Points
    314
    Par défaut
    exact,

    pour plus de précision, la ligne erronée est la suivante,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 9 To cellule Step Pas
    ou Pas est égal a 0 (non défini donc automatiquement dimensionné comme un entier égal à 0 pour concorder avec le for)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = Debut to Fin Step Pas
    'Tes opérations diverses
    Next
    Va débuter avec i = "Debut"
    à Chaque next, i sera augmenté de "Pas" (diminué si "Pas" est négatif)
    la boucle s'arrêtera si et seulement si i = "Fin" après le next.

    en l'occurence dans ton cas tu fais un i = i + 0 donc il n'arrivera jamais à "Cellule"


    Maintenat en regardant ton code quelques erreurs :
    - i est une ligne (allant donc de 1 a 65 536) et ne devrait pas être défini comme entier (compris entre -32 768 et 32 767)
    - les définition de tes Chaine de caractères.
    c = "C" & ""
    c = "C" & cellule
    pourquoi définir une variable puis la redéfinir juste après différement ?
    pourquoi ne pas faire directement
    - à quoi te sert j ?
    j = cellule - 2

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 96
    Points : 56
    Points
    56
    Par défaut
    merci c'est super sympa

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 96
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par

    pourquoi définir une variable puis la redéfinir juste après différement ?
    pourquoi ne pas faire directement
    [CODE
    c = "C" & cellule[/CODE]
    - à quoi te sert j ?
    je pensais (car on me l'avais soufflé) que c'était obligatoire... si ca marche sans c'est très bien...
    Sinon j sert car y a la case à remplir et le minimum a calculé de la case 8 à la case à remplir -2...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 96
    Points : 56
    Points
    56
    Par défaut
    j'ai encore un souci

    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
    30
    31
    32
    33
    34
    35
    36
    Function calculeDomaineTester()
    'declarations
    Dim cellule As Integer
    Dim c As String
    Dim compteur As String
     
    Dim resultat As Single
    Dim i As Integer
    Dim j As Integer
    Dim pas As Integer
     
     
     
     
    'recuperation de la cellule à remplir stocker en z1
    cellule = ActiveSheet.Cells.Range("Z1").Value
    c = "C" & cellule
     
     
    'calcul du minimum
    resultat = ActiveSheet.Cells.Range("C8").Value
    j = cellule - 2
     
    'initialisation de pas a 1
    pas = 1
    For i = 9 To cellule Step pas 'pour toutes les lignes
    compteur = "C" & i 'on se positionne sur la cellule a tester
       If ActiveSheet.Cells.Range(compteur).Value < resultat Then 'si il est plus petit
            resultat = ActiveSheet.Cells.Range(compteur).Value 'alors on remplace le resultat par la valeur de la cellule testée
        End If
    Next
    'affichage du minimum dans la cellule
    ActiveSheet.Cells.Range(c).Value = resultat
     
     
    End Function
    mon resultat à la bonne valeur dans la boucle if mais au final renvoie 0...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Points : 542
    Points
    542
    Par défaut
    bonjour

    a la fin de ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    function ......
    calculeDomaineTester = valeur a renvoyer

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

Discussions similaires

  1. Encore un probleme de boucle for
    Par flysurfer dans le forum Flash
    Réponses: 1
    Dernier message: 28/04/2008, 14h44
  2. probleme avec boucle "for"
    Par kentaro dans le forum ActionScript 1 & ActionScript 2
    Réponses: 16
    Dernier message: 30/01/2008, 20h15
  3. Probleme de boucle for
    Par rawkus dans le forum Flash
    Réponses: 2
    Dernier message: 14/05/2007, 20h15
  4. [Tableaux] Probleme de boucle for
    Par keumlebarbare dans le forum Langage
    Réponses: 12
    Dernier message: 20/09/2006, 14h29
  5. [C#] Probleme de boucle for et random
    Par Freeman166 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 09/01/2005, 14h34

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