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 :

Probléme pour ecrire une macro avec Combobox et incrementation dans plusieurs colonne [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 17
    Points : 5
    Points
    5
    Par défaut Probléme pour ecrire une macro avec Combobox et incrementation dans plusieurs colonne
    Bonjour ,

    Pas facile a expliqué pour cela que je n'est pas de reponse , je pense !!

    en fonction de mon aide__3

    ce que je veux c :

    ocotbre = "conso oct" si j'ai une valeur dans la textbox "conso gaz"
    "" = "conso ecs oct" si j'ai une valeur dans lea textbox "conso ecs"
    "" = "Dju oct" si j'ai une valeur dans la textbox "DJU"

    et ainsi de suite avec les autre mois !!!

    Comment ecrire cela ???

    EXEMPLES :

    je choisi un bat puis je rentre une valeur "1" dans la textbox "conso gaz" en fonction d'une varibale "octobre" la valeur doit s'incremente dans la colonne "Conso oct" !

    je choisi un bat puis je rentre une valuer 3 par exemple dans la textbox "conso ecs" en fonction du mois de "novembre" la valeur doit s'incremente dans la colonne "Conso ecs Nov".

    Sachant que cette ecriture me permet de simplifié la saisie , car auparavant javais 1 combobox mois par textbox( Conso oct , Conso ecs oct et DJU oct) et donc 3 saisie de plus .
    En PJ l'ancienne methode aide__1

    Merci
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour mimil49,

    Le calcul effectué par ta procédure est curieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Données").Cells(li, col).Value = (Me.TextBox1.Value) - ai  'place la valeur de la TextBox1 - l'index du mois précédent dans la cellule "Conso oct".
    La "Conso oct" est donc égale à la valeur saisie dans la Textbox1 "conso gaz " à laquelle on soustrait la valeur de l‘index de début d’année GAZ (ai).
    L’index ai étant égal à 1000, si je saisis 20 en octobre, la "Conso oct" est donc de -980 ???
    Dis-nous en clair la valeur que tu es censé trouver dans "Conso oct" lorsque tu saisis 20 (par exemple) dans la Textbox1 "conso gaz ".

    Cordialement.

    Re-bonjour,

    Je crois avoir compris le calcul de la consommation gaz.
    La valeur saisie correspond à l’index du compteur gaz (consommation globale) et la différence avec l’index du mois passé permet de connaitre la consommation.
    Pour adapter ton code, il suffit de redéfinir la colonne qui correspond au mois.
    Tu pourras établir un code identique pour le calcul de consommation ECS.

    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
    Private Sub CommandButton1_Click() 'bouton "Valider GAZ"
    Dim li As Byte 'déclare la variable li (LIgne)
    Dim col As Byte 'déclare la variable col (COLonne)
    Dim ai As Double  'décare la variable ac (Ancien Index)
        li = Me.ComboBox1.ListIndex + 7 'définit la ligne qui correspond au bâtiment
        col = (Me.ComboBox2.ListIndex) * 4 + 16 'définit la colonne qui correspond au mois _
        (récupère la valeur stockée dans la colonne 1 de la ComboBox1)
        Select Case col 'agit en fonction  de la colonne col
            Case 16 'si colonne  P (c.a.d le mois d'octobre)
                ai = (Sheets("Données").Cells(li, col - 3).Value)  'définit l'ancien index (= debut année)
            Case 20 To 44 'si colonne au delà de T a AR
                ai = (Sheets("Données").Cells(li, col - 4).Comment.Text) 'définit l'ancien index (récupère le commentaire deux cellules à gauche)
        End Select 'fin de l 'action en fonction de la cellule
        With Sheets("Données")
            Sheets("Données").Cells(li, col).ClearComments 'supprime un éventuel commentaire dasns la cellule (li, col)
            Sheets("Données").Cells(li, col).AddComment (TextBox1.Value) 'place le contenu de la TextBox1 (l'index du mois) en commentaire dans la cellule (li, Col)
            Sheets("Données").Cells(li, col).Value = (Me.TextBox1.Value) - ai 'place la valeur de la TextBox1 - l'index du mois précédent dans la cellule (li, col)
        End With
    End Sub
    Cordialement.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Enorme merci GFZT82

    Cela fais deux semaine que je cherche la solution est en faite la seul modif est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    col = (Me.ComboBox2.ListIndex) * 4 + 16 'définit la colonne qui correspond au mois _
        (récupère la valeur stockée dans la colonne 1 de la ComboBox1)
    Mais peux tu m'expliquer juste ton ecriture , pourquoi " * 4 + 16 " ??

    Je vais maintenant faire les autres combobox !!

    Encore merci

  4. #4
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Ce calcul permet de faire la correspondance entre le numéro de l'élément sélectionné dans ta ComboBox et la colonne mois dans ta feuille.

    Dans ta feuille, le premier mois (octobre) est situé en colonne 16.
    Chacun des mois suivants est décalé de 4 colonnes par rapport au mois précédent (novembre en colonne 20, décembre en colonne 24, etc).
    Dans la ComboBox2, le mois d’octobre correspond à l’index 0, novembre à l’index 1, décembre à l’index 2, etc.

    D’où la formule permettant de faire la correspondance :
    N° de colonne = N° d’Index * 4 + 16


    Content d'avoir pu te rendre service.
    Bonne continuation .

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Merci

    Ca me parait plus simple maintenant

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

Discussions similaires

  1. [XL-2007] Problème pour créer une macro de type Si cellule = xx alors insérer image yy
    Par Cali7 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 17/03/2011, 10h11
  2. problème pour separer une table avec une procedure
    Par mathieu38 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 09/04/2009, 09h25
  3. Problème pour lancer une macro dans Excel
    Par jujuf1 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 29/12/2008, 16h32
  4. Problème pour réaliser une macro "de boucles" dans VBA
    Par philou7176 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/12/2008, 15h41
  5. Réponses: 22
    Dernier message: 20/05/2008, 10h25

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