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 facile à résoudre : application d'une formule sur une colonne


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 38
    Points : 28
    Points
    28
    Par défaut problème facile à résoudre : application d'une formule sur une colonne
    Bonjour,

    j'ai un petit problème à vous soumettre :

    * Je souhaite réaliser une macro pour effectuer une opération toute simple sur une colonne entière. Mais si j’écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("O:O").FormulaR1C1 = "=RC[-11]-RC[-9]"
    La soustraction s'éffectue sur les 60.000 lignes que compte une page excel !
    ce qui n'est pas mon souhait !

    * Je voudrais pouvoir effectuer ma soustraction seulement sur les lignes que j'utilise (entre 800 et 2000 suivant le fichier sur lequel est appliqué la macro)

    Merci pour toute aide !

  2. #2
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 147
    Points : 103
    Points
    103
    Par défaut
    Peut être en utilisant l'outil ".End"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("O:O").End(xlDown).FormulaR1C1 = "=RC[-11]-RC[-9]"
    Code non testé, mais qui doit marcher.
    N'oubliez pas de cliquer sur Résolu, une fois la réponse donnée.

  3. #3
    Membre averti Avatar de mordrhim
    Inscrit en
    Avril 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 270
    Points : 314
    Points
    314
    Par défaut
    au lieu de le faire pour la colonne tu le fait pour toutes les lignes du tableau que tu veux remplir.

    pour trouver la derniere ligne du tableau d'autre sujet sont la pour expliquer comment faire.

    après tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = PremiereLigne to DerniereLigne
        Range("O" & i).FormulaR1C1 = "=RC[-11]-RC[-9]"
    Next
    PremiereLigne : a changer par la premiere ligne du tableau
    Derniereligne : à changer par la derniere ligne du tableau

    personnellement, si le tableau a une colonne forcément pleine (un clé), je fait une boucle avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    i = 1
    Do while cells(i,ColonneTest) <> Empty
        Range("O" & i).FormulaR1C1 = "=RC[-11]-RC[-9]"
        i = i + 1
    Loop
    Attention, il faut être sur que le tableau est rempli pour TOUTES les lignes de la colonne ColonneTest

  4. #4
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 147
    Points : 103
    Points
    103
    Par défaut
    Je me corrige :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    range("O1").select
    Range(selection,columns(15).End(xlDown)).FormulaR1C1 = "=RC[-11]-RC[-9]"
    N'oubliez pas de cliquer sur Résolu, une fois la réponse donnée.

  5. #5
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 38
    Points : 28
    Points
    28
    Par défaut
    Merci pour vos réponses,

    mordrhim, j'ai tester votre boucle Do Loop et ça marche très bien !

    Mais j'ai un autre problème qui se profile !

    la colonne ainsi crée (colonne "N" remplie d'un millier de valeurs), je voudrais la tracer dans un graphe en fonction de la colonne "B" (Cette colonne "B" contient une série de nombre croissant incrémenté de 60 en 60, et cette colonne contient autant de points que "N", soit un millier)

    je pensais écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Charts.Add
            ActiveChart.ChartType = xlLine
            ActiveChart.SetSourceData Source:=Sheets("Resultats").Range("N:N"), PlotBy:=xlColumns
            ActiveChart.SeriesCollection(1).XValues = Sheets("Resultats").Range("B:B")
            ActiveChart.Location Where:=xlLocationAsObject, Name:="Graph"
    Mais de nouveau le tracé s'effectue sur les 65.000 points que compte Excel !!
    Je ne comprend pas pourquoi (alors que les colonnes de 1000 à 65.000 sont vide), Excel continu de penser qu'i y a 65.000 lignes dans mon tableau.

    Comment faire comprendre une fois pour toute à Excel que je n'ai pas 65.000 lignes ?

    ou si ce n'est pas possible, comment tracer convenablement mon graph ?

    Merci d'avance

Discussions similaires

  1. Etendre une formule sur une plage filtrée
    Par sophie_2525 dans le forum Excel
    Réponses: 5
    Dernier message: 07/12/2016, 11h45
  2. Réponses: 5
    Dernier message: 15/07/2013, 12h12
  3. [XL-2007] A la recherche d'une formule sur une feuille de ratios
    Par edelweiss73 dans le forum Excel
    Réponses: 4
    Dernier message: 09/01/2012, 17h17
  4. Recopie d'une formule sur une plage
    Par zebi42 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 20/05/2010, 16h36
  5. Réponses: 5
    Dernier message: 14/03/2008, 17h01

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