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 :

Macro comment copier une formule jusqu'à la derniere ligne d'une col [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 158
    Points : 61
    Points
    61
    Par défaut Macro comment copier une formule jusqu'à la derniere ligne d'une col
    Bonjour et Bonne Année

    Je suis complétement débutante en macro et j'ai une table de x col dont le nombre de lignes s'incrémente.

    J'utilise l'editeur de macro pour modifier le format des dates ou convertir en texte certaines colonnes.

    Mais il faut que je copie une formule ou que j'indique qu'en col G la formule suivante : jusqu'à la derniere ligne de la col actualisée.

    Merci beaucoup pour votre aide

  2. #2
    Expert éminent 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
    Points : 9 402
    Points
    9 402
    Par défaut
    Bonjour,

    Si on met ta formule en colonne G on va avoir une référence circulaire

    En mettant la formule dans la colonne H tu peux utiliser cette ligne de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("H2:H" & Range("B" & Rows.Count).End(xlUp).Row).FormulaLocal = "=si(estvide(b2);g2;b2)"

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 158
    Points : 61
    Points
    61
    Par défaut
    Bonjour Jérôme,

    Merci pour ta réponse, mais comme je ne connais pas du tout le VBA; je ne sais pas comment intégrer la ligne de code que tu m'as donné.

    J'ai indiquer le code suivant mais la formule n'est copier que sur la 1ere ligne de la col soit h1. Par contre il selectionne la totalité de la col.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub eotp()
    '
    ' eotp Macro
    '
     
    '
        Range("h2:h" & Range("B" & Rows.Count).End(xlUp).Row).FormulaLocal = "=si(estvide(b2);g2;b2)"
        Selection.Copy
        Range("H2:H" & Range("B" & Rows.Count).End(xlUp).Row).FormulaLocal = "=si(estvide(b2);g2;b2)"
        ActiveSheet.Paste
    End Sub

  4. #4
    Expert éminent 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
    Points : 9 402
    Points
    9 402
    Par défaut
    Ajoutes un titre de colonne sur la ligne 1.

    Pas besoin de copier/Coller avec cette ligne de code, la formule va se mettre sur toutes les lignes.

    il faut utiliser une colonne qui est toujours renseignée (en rouge)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub eotp()
    '
    ' eotp Macro
    '
     
    '
        Range("h2:h" & Range("B" & Rows.Count).End(xlUp).Row).FormulaLocal = "=si(estvide(b2);g2;b2)"
    
    End Su

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 158
    Points : 61
    Points
    61
    Par défaut
    C'est super, c'est pratiquement cela.

    Tout d'abord je ne sais pas comment mettre un titre dans la col. Avant ou après les () bloque la macro.

    Il me copie bien la formule dans ma table mais s'arrête à la 12ème ligne avant la fin sur une table de 19 845 lignes. Cette table commence à la ligne 21.

    De plus, quel code puis-je utiliser pour mettre l'heure et la date dans une cellule à la jigne 2 par ex avant ma table ?

  6. #6
    Expert éminent 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
    Points : 9 402
    Points
    9 402
    Par défaut
    Tout d'abord je ne sais pas comment mettre un titre dans la col. Avant ou après les () bloque la macro.
    Je pensais simplement a saisir un titre dans l'onglet


    Si le tableau commence ligne 21, ne devrait on pas commencer a mettre la forlule ligne 21?
    Si c'est le cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("h21:h19845").FormulaLocal = "=si(estvide(b21);g21;b21)"

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 158
    Points : 61
    Points
    61
    Par défaut
    Je me suis rendu compte de mon erreur, je n'avais pas selectionné la ligne 21 dans le code. merci beaucoup. C'est parfait.

    Maintenant j'ai un autre problème car dans ma Base j'ai des montants avec des ". " pour les séparateurs de milliers. Si je remplace le "." par rien pour avoir un format numérique la macro converti les décimales aussi: par ex 499.66 devient 49966 ou 49 966

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Columns("AV:AV").Select
        Selection.Replace What:=".", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    comment puis-je faire ?

  8. #8
    Expert éminent 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
    Points : 9 402
    Points
    9 402
    Par défaut
    Plutôt une convertion qu'un remplacement

    A essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Columns("AV:AV").TextToColumns Destination:=Range("AV1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
            :=Array(1, 1), DecimalSeparator:=",", ThousandsSeparator:=".", _
            TrailingMinusNumbers:=True

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 158
    Points : 61
    Points
    61
    Par défaut
    Je n'ai pas compris avec le code j'ai les décimales avec un point

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DecimalSeparator:=",", ThousandsSeparator:=".",
    par contre avec l'inverse c'est bon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DecimalSeparator:=".", ThousandsSeparator:=".",
    . Bizzard !

    Merci beaucoup pour ton aide

  10. #10
    Expert éminent 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
    Points : 9 402
    Points
    9 402
    Par défaut
    C'est étonnant d'avoir un point comme symbole décimale et séparateur de milliers

    Pas facile de s'y retrouver, en effet

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/02/2014, 14h33
  2. [OpenOffice][Tableur] [Macro] Comment copier une plage de données d'une Feuille "A" vers la Feuille Active
    Par clduick dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 03/02/2012, 12h39
  3. copier une formule jusqu'à une cellule n (n variable)
    Par Bubale dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2008, 00h46
  4. Réponses: 1
    Dernier message: 17/08/2007, 10h09
  5. Réponses: 4
    Dernier message: 02/08/2007, 20h51

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