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 :

Programme VBA - ittération - formules - changement de colonne [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 3
    Par défaut Programme VBA - ittération - formules - changement de colonne
    Bonjour,

    Je voudrais faire une macro VBA qui me permettrait d'obtenir pour chaque colonne (mois), le taux de réduction en fonction de la quantité demandée que je voudrais afficher dans une cellule en fin de chaque colonne. Je n'arrive pas à voir où est le problème avec ma macro. Je vous remercie d'avance.

    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
    Option Explicit
     
    Sub Discount()
     
    Dim Discount As Integer
    Dim Quantity As Long
    Dim i As Integer
    i = 1
    For i = 1 To 6
    Quantity = WorksheetFunction.Sum(Cells(2, i), Cells(18, i))
    If Quantity < 40 Then Discount = 20
    If Quantity >= 40 Then Discount = 10
    Cells(20, i) = Discount 
    i = i + 1
     
    Next i
     
    End Sub

  2. #2
    Membre chevronné
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Par défaut
    Il manque les end if non?
    vous avez ouvert deux "if" donc il faut deux "end if"

  3. #3
    Expert éminent


    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
    Par défaut
    Bonjour,

    La ligne
    est de trop.. la boucle for incrémente déjà i.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    En simplifiant un peut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub Discount()
     
        Dim i As Integer
     
        For i = 1 To 6
     
            Cells(20, i) = IIf(Cells(2, i) + Cells(18, i) >= 40, 10, 20)
     
        Next i
     
    End Sub
    Il est préférable de ne pas utiliser de variable ayant le même nom que la Sub ou Function, ça peut prêter à confusion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Sub Discount()
     
    Dim Discount As Integer
    ...
    Une variable compteur est d'office initialisée en début de boucle donc "i = 1" est inutile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    i = 1
    For i = 1 To 6
    ...
    Et comme le dit bbil, il ne sert à rien d'incrémenter car la boucle s'en charge.

    Hervé.

  5. #5
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour à tous,

    Je me permets d'ajouté un petit post pour simplement dire que les
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(20, i) = Discount
    ne fonctionnent pas toujours en version 2007 et que je préconise plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(20, i).Value = Discount
    c'est du vécu !!!

    pour répondre à bboy-eazy
    Il n'y a pas besoin de endif qd il n'y a qu'une ligne de IF le end if est implicite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Quantity < 40 Then Discount = 20
    est equivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Quantity < 40 Then 
       Discount = 20
    End If
    à bientôt

  6. #6
    Membre à l'essai
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 3
    Par défaut
    Je vous remercie tous pour votre aide.

    Je n'arrive toujours pas à écrire la ligne de code me permettant de faire la somme des éléments dans la colonne i des lignes 1 à 18.
    sur excel ça donnerait : = Sum (i1 : i18) - où i serait remplacé par la colonne A,B,C et ainsi de suite à chaque itération.

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

Discussions similaires

  1. [XL-2010] Tableau recapitulatif, changement de colonnes, formules
    Par Georges974 dans le forum Excel
    Réponses: 12
    Dernier message: 22/01/2012, 04h07
  2. [VBA Excel] Formule contenant des noms de colonnes dans macro
    Par Tinnou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/06/2007, 18h09
  3. Réponses: 10
    Dernier message: 01/12/2005, 09h47
  4. [VBA/Excel] Formule via macro
    Par UNi[FR] dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/10/2005, 15h11
  5. Changements de colonnes dans une BDD MySQL
    Par arnaud_verlaine dans le forum Requêtes
    Réponses: 8
    Dernier message: 07/08/2003, 11h33

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