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 :

Ecrire dans une cellule [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 178
    Points : 80
    Points
    80
    Par défaut Ecrire dans une cellule
    Bonjour,

    J'ai créé une boucle FOR qui me calcule une valeur RESULTAT à chaque tour. J'aimerais que chacune des valeur de RESULTAT soit inscrite dans une cellule de ma feuille XXX pour ensuite les exploiter et créer des graphes.

    J'ai essayé ceci comme boucle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    For i = 1 + Count To Annee2 - 1 + Count
     
            Total1 = Total1 * (1 + Actualisation)
     
            Worksheets("XXX").Cells(i, Colonne).Value = Total1
     
            Actualisation = Actualisation * (1 + Taux_Act)
     
        Next i
    mais rien ne s'inscrit dans ma feuille XXX.

    Que faire?

    Merci d'avance

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

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Comment sont alimentées les variables colonne et count?
    Jérôme

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 178
    Points : 80
    Points
    80
    Par défaut
    count et colonne sont deux "Integer" que je défini avant le début de la boucle. Ce sont des constantes.

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

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    as tu essayer de mettre un point d'arret sur la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("XXX").Cells(i, Colonne).Value = Total1
    Pour voir si ton code boucle bien
    Jérôme

  5. #5
    Membre actif
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Points : 283
    Points
    283
    Par défaut
    Pourrais tu en dire plus parce que pour moi le bout de code que tu nous montre fonctionne. Après si rien ne s'inscrit ça vient peu être de tes constantes qui sont mal définies, ou de ta boucle qui est mal définie, mais sans le reste du code on ne peut rien dire.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 178
    Points : 80
    Points
    80
    Par défaut
    as tu essayer de mettre un point d'arret sur la ligne
    Pour voir si ton code boucle bien
    En fait, c'est un bout de code que j'ai ajouté dans une fonction (qui me sommait les éléments calculés dans la boucle FOR) pour que celle-ci m'inscrive les résultats intermédiaires dans les cellules d'un tableau.

    Après l'ajout du code la fonction m'effectue toujours correctement la somme mais rien ne s'inscrit dans les cellules de XXX.

    Voici le code... mais rien qu'en le relisant après copie je me rend compte de quelques erreurs...

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Public Function Calcul_Total(Phase As String, Objet1 As Long, Objet2 As Double, Objet3 As Double, Objet4 As Double, _
        Objet5 As Double, Annee As Double, DureeP1 As Double, DureeP2 As Double, DureeP3 As Double, Duree_totale As Double, _
        Taux_Act As Double) As Double
     
        Application.Volatile
     
        Dim Total1 As Double
        Dim Actualisation As Double
        Dim i As Integer
        Dim Count As Integer
        Dim Colonne As Integer
     
        If Phase = "Phase 1" Or Phase = "MGlobale" Then
     
            Count = 3
     
            If Phase = "Phase 1" Then
     
                Colonne = 2
     
            ElseIf Phase = "MGlobale" Then
     
                Colonne = 5
     
            End If
     
        ElseIf Phase = "Phase 2" Then
     
            Count = DureeP1 + 4
     
        ElseIf Phase = "Phase 3" Then
     
            Count = DureeP2 + DureeP1 + 4
     
        End If
     
        Total1 = (Objet1 + Objet2 + Objet3 + Objet4 + Objet5) / Annee
        Actualisation = 1 + Taux_Act
     
        Worksheets("XXX").Range(Cells(Count, Colonne), Cells(Count, Colonne)).Value = "Total1"
     
        Dim Annee2 As Integer
        Annee2 = CInt(Annee)
     
        For i = 1 + Count To Annee2 - 1 + Count
     
            Total1 = Total1 * (1 + Actualisation)
     
            Worksheets("XXX").Cells(i, Colonne).Value = Total1
     
            Actualisation = Actualisation * (1 + Taux_Act)
     
        Next i
     
        Calcul_Total = Total1
     
    End Function

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 178
    Points : 80
    Points
    80
    Par défaut
    Je viens d'essayer de mettre un point d'arrêt mais comme il s'agit d'une fonction, ça n'a pas l'air de s'arrêter beaucoup.

    Par ailleurs, petite rectification par rapport à ce que je disais tout à l'heure. En fait, ma fonction ne fonctionne plus du tout. La somme ne se calcule plus, j'ai le message d'erreur #VALEUR! dans la cellule d'appel de la fonction.

    Je viens de corriger le code par rapport aux erreurs que j'ai constaté tout à l'heure mais cela ne fonctionne toujours pas:

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Function Calcul_Total(Phase As String, Objet1 As Long, Objet2 As Double, Objet3 As Double, Objet4 As Double, _
        Objet5 As Double, Annee As Double, DureeP1 As Double, DureeP2 As Double, DureeP3 As Double, Duree_totale As Double, _
        Taux_Act As Double) As Double
     
     
        Application.Volatile
     
        Dim Total1 As Double
        Dim Total As Double
        Dim Actualisation As Double
        Dim i As Integer
        Dim Count As Integer
        Dim Colonne As Integer
     
        If Phase = "Phase 1" Or Phase = "MGlobale" Then
     
            Count = 3
     
            If Phase = "Phase 1" Then
     
                Colonne = 2
     
            ElseIf Phase = "MGlobale" Then
     
                Colonne = 5
     
            End If
     
        ElseIf Phase = "Phase 2" Then
     
            Count = CInt(DureeP1 + 4)
     
        ElseIf Phase = "Phase 3" Then
     
            Count = CInt(DureeP2 + DureeP1 + 4)
     
        End If
     
        Total1 = (Objet1 + Objet2 + Objet3 + Objet4 + Objet5) / Annee
        Actualisation = 1 + Taux_Act
     
        Total = Total1
     
        Worksheets("XXX").Range(Cells(Count, Colonne), Cells(Count, Colonne)).Value = Total1
     
        Dim Annee2 As Integer
        Annee2 = CInt(Annee)
     
        For i = 1 + Count To Annee2 - 1 + Count
     
            Total = Total + Total1 * Actualisation
     
            Worksheets("XXX").Cells(i, Colonne).Value = Total1 * Actualisation
     
            Actualisation = Actualisation * (1 + Taux_Act)
     
        Next i
     
        Calcul_Total = Total
     
    End Function

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

Discussions similaires

  1. Ecrire dans une cellule depuis une autre?
    Par noel45 dans le forum Excel
    Réponses: 5
    Dernier message: 10/01/2008, 16h00
  2. Ecrire dans une cellule excel
    Par baloote dans le forum C#
    Réponses: 10
    Dernier message: 08/01/2008, 14h23
  3. Ecrire dans une cellule en VBA
    Par ade94 dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/07/2007, 17h15
  4. [VBA-E] Ecrire dans une cellule sans écraser son contenu
    Par skystef dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/02/2007, 15h43
  5. Réponses: 4
    Dernier message: 15/04/2005, 15h25

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