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 formule étendue en ligne et en colonne [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 23
    Par défaut Problème pour formule étendue en ligne et en colonne
    Bonjour,

    J'ai écrit un programme pour remplir un tableau avec une formule. Mais le programme ne semble pas avoir d'erreurs mais par contre, si je lance la macro, rien ne se passe et mon fichier Excel est même bloqué.

    Voici mon programme (calcul d'une formule à partir de la cellule N2 jusqu'au plus bas et le plus à droite):

    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
    Sub macro()
     
    Dim NbLignes As Long
    Dim NbColumns As Long
    Dim i As Long
    Dim j As Long
     
    Worksheets(2).Activate
     
    'Détermine le nombre de colonnes et lignes
    NbLignes = ActiveSheet.UsedRange.Rows.Count
    NbColumns = ActiveSheet.UsedRange.Columns.Count
     
     
    For i = 2 To NbLignes
        For j = 14 To NbColumns
        Cells(i, j).FormulaR1C1 = "=SUM(IF(AND(YEAR(R1C)<=YEAR(RC4),RC8<R1C),RC7*RC6/100),IF(YEAR(R1C)=YEAR(RC4),RC6,0))"
         Next j
    Next i
     
    End Sub
    Merci d'avance!

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    et comme ceci que se passe t-il ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub macro1()
    Worksheets(2).UsedRange.FormulaR1C1 = "=SUM(IF(AND(YEAR(R1C)<=YEAR(RC4),RC8<R1C),RC7*RC6/100),IF(YEAR(R1C)=YEAR(RC4),RC6,0))"
    end sub
    et n'est ce pas plutôt ceci? car usedrange a des défauts

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub macro2()
    Worksheets(2).Range("N2").CurrentRegion.FormulaR1C1 = "=SUM(IF(AND(YEAR(R1C)<=YEAR(RC4),RC8<R1C),RC7*RC6/100),IF(YEAR(R1C)=YEAR(RC4),RC6,0))"
    end sub

  3. #3
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 23
    Par défaut
    Cela ne fonctionne pas. Dans les deux cas, il calcule la formule pour tout le tableau, au lieu de commencer à la cellule N2.

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    quelle est l'adresse du tableau ou en quelle cellule commence t il, et quelle recopie doit être effectuée?

  5. #5
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 23
    Par défaut
    Pour un nombre indéfini de lignes, on a des données de la colonne A à la colonne M.
    Les colonnes suivantes (à partir de N) doivent être calculées en fonction des données dans ces M colonnes (le nombre M de ces colonnes est fixe).
    Les formules apparaissent donc à partir de la colonne N, ligne 2 (puisque la première ligne dénomme les colonnes) et ce jusqu'à la colonne BJ (mais le nombre de colonne risque de changer) et descendent jusqu'à une ligne indéterminée.

    C'est plus clair?

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim LastLig As Long
    Dim LastCol As Integer
     
    With Worksheets(2)
        LastLig = .Cells(Rows.Count, 1).End(xlUp).Row
        LastCol = .Cells(1, Columns.Count).End(xlToLeft).Column
        .Range(.Cells(2, 14), .Cells(LastLig, LastCol)).FormulaR1C1 = "=SUM(IF(AND(YEAR(R1C)<=YEAR(RC4),RC8<R1C),RC7*RC6/100),IF(YEAR(R1C)=YEAR(RC4),RC6,0))"
    End With

  7. #7
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 23
    Par défaut
    Super, ça fonctionne!
    Merci beaucoup!

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

Discussions similaires

  1. [MySQL] problème pour récupérer toutes les lignes contenue dans un select
    Par Baleze dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/10/2012, 21h42
  2. [XL-2007] Problème pour formule automatique
    Par kedrik dans le forum Excel
    Réponses: 3
    Dernier message: 04/03/2010, 00h01
  3. [XL-2003] Probléme pour Formule
    Par Maiden002 dans le forum Excel
    Réponses: 9
    Dernier message: 31/07/2009, 17h18
  4. [SQL] Problème pour formuler une requête SQL
    Par renaud26 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 22/03/2008, 19h35
  5. Réponses: 1
    Dernier message: 16/05/2007, 21h31

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