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 :

[VBA-E]Calcul d'une cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Par défaut [VBA-E]Calcul d'une cellule
    Bonjour à tous!

    Je me trouve dans un gros problème de reflexion... J'ai passé 4h de temps sur ce problème et sans résultat, c'est pourquoi je viens vous demander de l'aide!

    Voici le problème:
    J'ai un fichier excel de ce type :



    Voici ce que je veux faire :
    Dans la cellule E2:
    Faire un calcul en vba qui est le suivant : colonne C * colonne D sur toutes les lignes de la date 12/07/07

    Et faire ainsi pour toutes les dates sachant que le nombre de ligne par date est variable.

    Si vous voulez plus de précision, n'hésitez pas a me demander!!

    En tout cas, merci d'avance!

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    J'espère que j'ai bien compris ce que tu voulais

    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
    37
    38
    39
     
    Dim i As Long
    Dim l As Long
    Dim j As Long
    Dim str As String
     
    i = 2
    l = 2
     
    Do While Not Range("B" & i).Value = ""
     
        If Range("A" & i).Value <> vide Then
     
            If Range("A" & i).Value <> str Then
                'Boucle sur la colonne E
                For j = l To i - 1
     
                    Range("E" & j).FormulaLocal = "=somme(C" & l & ":C" & i - 1 & ") * somme(D" & l & ":D" & i - 1 & ")"
     
                Next j
     
                l = i
                str = Range("A" & i).Value
     
     
            End If
     
        End If
     
        i = i + 1
     
    Loop
     
    'insere les formules sur la dernière série
    For j = l To i - 1
     
        Range("E" & j).FormulaLocal = "=somme(C" & l & ":C" & i - 1 & ") * somme(D" & l & ":D" & i - 1 & ")"
     
    Next j

  3. #3
    Membre éclairé Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Par défaut
    Merci beaucoup pour ton aide.
    Ton code est performant mais n'est pas utilisable pour mon programme.

    En fait la formule a mettre dans la colonne E, c'est :

    =SOMME(C3*D3+C4*D4+C5*D5) /!\ Ceci est valable pour l'exemple que j'ai donné dans le premier post!
    Ca commence a C3 parceque les deux premières lignes sont occuppées

    En fait, a chaque fois que j'ajoute une ligne, je lance la macro.Il faudrait que le calcul se fasse a chaque fois que j'execute la macro.

    Pour être le plus clair possible, voici réélement a quoi ressemble mon tableau :

    (Sauf que les valeurs changent, là c'est juste des essais)



    La colonne H est la colonne qui devra recevoir le calcul.
    Le Calcul (pour le 12/07/07) est le suivant:
    =SOMME(G3*E3+G4*E4+G5*E5)

    Ce calcul doit pouvoir s'adapter si je rajoute une ligne le 12/07/07
    (En considèrant la dernière ligne (13/07/07) inexistante ^^)

    Et lorsque j'ajoute une ligne le 13/07/07, le calcul repart de cette ligne.

    Je sais c'est à s'arracher les cheveux, d'ailleurs, moi j'en ai plus !!!

    Merci beaucoup en tout cas!

  4. #4
    Membre éclairé Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Par défaut
    Heu bon ben j'ai réussi (je crois) !!!

    En fait, j'ai calculé ligne par ligne (Ex*Gx) et j'ai stocké ce produit dans une colonne, j'ai ensuite fait une bête somme de tout mes produits!
    Comment n'y avais-je pas pensé plus tôt?

    En tout cas, merci beaucoup jfontaine, ton code m'a vraiment beaucoup aidé!!

  5. #5
    Membre éclairé Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Par défaut
    Bon.... J'ai crié victoire trop tôt lol!!!

    En fait, le calcul s'effectue normalement sauf que lorsque la date change, le calcul continue

    Voici mon 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
                Dim i As Long
                Dim l As Long
                Dim j As Long
                Dim str As String
     
                i = 3
                l = 3
     
                Do While Not Range("B" & i).Value = ""
                    If Range("A" & i).Value <> "" Then
                        If Range("A" & i).Value <> DateDuJour Then
                            'Boucle sur la colonne E
                            For j = l To i - 1
                                Range("H" & j).FormulaLocal = "=somme(Q" & l & ":Q" & i - 1 & ") "
                            Next j
                            l = i
     
                        End If
                    End If
                    i = i + 1
                Loop
                'insere les formules sur la dernière série
                For j = l To i - 1
                    Range("H" & j).FormulaLocal = "=somme(Q" & l & ":Q" & i - 1 & ")"
                Next j
    DateDuJour c'est simplement la Date (DateDuJour=Date)

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Dans le code tu utilises datedujour. cette variable n'est pas instantié et ne change pas de valeur.
    A quoi correspond datedujour?

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

Discussions similaires

  1. [VBA-E] Savoir si une cellule contient un commentaire.
    Par $p00ky dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 02/08/2022, 17h57
  2. Réponses: 3
    Dernier message: 13/06/2006, 16h36
  3. [VBA-E] Savoir si une cellule est contenue dans une plage
    Par psych0o0 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/05/2006, 14h12
  4. [VBA-E]contenu d'une cellule gestion erreur macro
    Par matou_aouh dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/03/2006, 10h18
  5. vba excel - Comment saisir une cellule sans faire entrer
    Par brethomeau dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/11/2005, 17h50

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