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 :

Boucle For qui ne fonctionne pas pour toutes les valeurs [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Par défaut Boucle For qui ne fonctionne pas pour toutes les valeurs
    Bonjour à tous,

    Je rencontre un problème assez particulier...

    J'ai une boucle qui rempli des cases d'une feuille Excel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     For i = 1 To 5
            If Not TabColInfo(i).colonne = 0 Then
                Sheets("Projets").Cells(ligne_vide, TabColInfo(i).colonne).Value = TabColInfo(i).infosaisie
            End If
        Next i
    ligne_vide est le numéro de la 1ère ligne vide déterminée dans une autre fonction.
    TabColInfo(i).colonne est le numéro de colonne déterminée dans une autre fonction.
    TabColInfo(i).infosaisie est la valeur à mettre dans la case et qui vient d'une saisie dans un Userform.

    Mon problème est que pour i = 1, 3, 4 et 5 tout se passe bien mais pas pour i = 2 !!!!
    Encore plus surprenant, quand je fait une ligne dédiée pour i = 2, ca fonctionne très bien !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'i = 2
    'Sheets("Projets").Cells(ligne_vide, TabColInfo(i).colonne).Value = TabColInfo(i).infosaisie
    Précision : ca fonctionnait très bien au début et plus du tout du jour au lendemain...

    Je ne suis pas un pro de VB, il y a peut être une particularité qui m'échappe, en tout cas ma logique reste perplexe...

    Quelqu'un a-t-il une idée d'où pourrait venir le problème ?
    Merci d'avance pour votre aide.

  2. #2
    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
    Refais ce petit test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To 5
        Debug.Print i & "  " & TabColInfo(i).colonne
        If TabColInfo(i).colonne > 0 Then

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Par défaut
    Merci pour la réponse, mais j'avais déjà fait le test et toutes mes variables contiennent bien la bonne valeur au moment de ma boucle.

    Par contre je viens de faire une modif de la valeur max de ma variable i. Pour l'exemple j'avais mis 5 mais en fait dans mon code c'est une valeur x qui vaut 103.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     const x = 103
    For i = 1 To x
            If Not TabColInfo(i).colonne = 0 Then
                Sheets("Projets").Cells(ligne_vide, TabColInfo(i).colonne).Value = TabColInfo(i).infosaisie
            End If
        Next i
    Quand je remplace x par une petite valeur (5 ou 10), le cas i = 2 fonctionne. Quand x est une grande valeur (103), le cas i = 2 ne fonctionne pas, pourtant les autres cas i =1 , 3, ..., 103 fonctionnent bien.

    Il y a une raison logique ? Ca va me rendre fou ce truc...

  4. #4
    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
    Qu'est ce que tu as comme valeur de TabColInfo(i).colonne quand i=0?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Par défaut
    TabColInfo(0).colonne = 33

    J'utilise la colonne 33 pour mettre la date du jour donc i = 0 n'est pas dans ma boucle.

  6. #6
    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
    Excuses, je voulais dire quand i=2

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

Discussions similaires

  1. [CakePHP] Behavior Cakephp 3 qui ne fonctionne pas avec toutes les entity associées
    Par HBPOM dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 27/03/2015, 13h34
  2. une boucle for qui ne fonctionne pas
    Par piffeo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/11/2008, 21h52
  3. Fonction mysql qui ne fonctionne pas pour un ancien postgreIste
    Par floreasy dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 15/01/2008, 18h49
  4. boucle for qui ne marche pas
    Par Invité dans le forum Langage
    Réponses: 16
    Dernier message: 12/06/2006, 10h59
  5. Requete qui ne fonctionne pas sur toutes les versions de MySQL
    Par goldorax113 dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/06/2006, 11h04

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