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 :

Question sur la façon de disposer son code


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut Question sur la façon de disposer son code
    Bonjour,

    Je vais prendre le temps de lire des cours et tutoriaux sur VBA d'ici peu, quand j'aurai un peu plus de temps. Malheuresement ce n'est pas trop le cas et j'aimerai avoir votre aide sur une question quant à la syntaxe / disposition du code et son effet sur la bonne exécution de la macro. Je m'explique avec un exemple concert. J'ai des comptes avec leur montant en face, et je dois dans une colonne indiquer si il s'agit d'un compte débiteur ou créditeur. J'ai donc fait un For... Next avec un If. Ci-dessous, le code qui me donne le résultat voulu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim BSE As Integer, AccType As Range
        BSE = .Cells(PNLS, 1).Offset(-1, 0).Row
        For Each AccType In Range("E2:E" & BSE)
        If AccType.Value < 0 Then AccType.Offset(0, -2).Value = "C" Else AccType.Offset(0, -2).Value = "D"
        Next AccType
    J'ai eu de la chance de tester ça et que ça marche car hier soir en partant je n'avais pas trouvé pourquoi ça ne fonctionnait pas, voilà ce que j'avais écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Dim BSE As Integer, AccType As Range
        BSE = .Cells(PNLS, 1).Offset(-1, 0).Row
        For Each AccType In Range("E2:E" & BSE)
        If AccType.Value < 0 Then AccType.Offset(0, -2).Value = "C" Else
        AccType.Offset(0, -2).Value = "D"
        Next AccType
    Résultat, j'ai eu des "D" sur toutes les lignes, quel que soit le montant.

    Pouvez-vous SVP m'expliquer pourquoi en fonction du fait de sauter une ligne ou pas ça change le résultat de l'exécution de la boucle ?

    Cordialement,

    Runsh

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 87
    Par défaut
    bonjour,
    j'ai envie de te dire que la bonne écriture est celle-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      Dim BSE As Integer, AccType As Range
        BSE = .Cells(PNLS, 1).Offset(-1, 0).Row
        For Each AccType In Range("E2:E" & BSE)
           If AccType.Value < 0 Then
               AccType.Offset(0, -2).Value = "C"  
           Else
               AccType.Offset(0, -2).Value = "D"
           End if
     
        Next AccType
    Tu peux en effet éviter le end if si tu écrit toute l'instruction en une ligne.
    Ca peut être source d'erreur comme dans ton cas puisque le else en fin de ligne n'exécute aucune instruction

    Donc dans ton 2ème source, ton else n'exécute aucune instruction et la ligne suivante est indépendante du if

  3. #3
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut
    Bonjour bellande,

    Merci pour ta réponse, elle est claire, à moi maintenant de réfléchir à ça à chaque fois que je vais faire des boucles de ce type.

    Cordialement,

    Runsh

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

Discussions similaires

  1. Question sur l'interface de développement en code web
    Par feanor91 dans le forum Visual Studio
    Réponses: 0
    Dernier message: 25/10/2013, 09h31
  2. Question sur la fonction readdir et son interprétation
    Par helkøwsky dans le forum Langage
    Réponses: 3
    Dernier message: 05/07/2010, 17h35
  3. Réponses: 2
    Dernier message: 18/06/2010, 19h12
  4. Petite question sur la façon de faire une sorte de thread
    Par bit_o dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 09/05/2007, 23h28
  5. Je me pose des questions sur ma façon de faire
    Par Diabless6 dans le forum Langage
    Réponses: 2
    Dernier message: 25/03/2007, 14h03

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