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 :

étirer une formule jusqu'à un numéro de ligne


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 57
    Points : 45
    Points
    45
    Par défaut
    Bonjour,
    Je me permets d'éditer mon message car pour l'instant il n'y a pas encore eu de réponses or mon problème a changé de nature.

    Voici ce que j'aimerai faire au cours d'une macro: étirer la formule excel de la cellule A5 jusqu'au même numéro de ligne que le dernier élément de la colonne L5. (ma version d'excel compte un maximum de 65536 cellules).

    Pour cela voici mon code dans la macro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim nb_elements, ligne_fin As Integer
    Range("A2").Formula = "=CountA(L5:L65536)"
    nb_elements = Range("A25").Value
    ligne_fin = 5 + nb_elements
    Selection.AutoFill Destination:=Range("A5:A" & ligne_fin)
    NB: counta() est l'équivalent (en vba) de la fonction nbval() de Excel


    J'ai édité car désormais mon code marche mais il est juste un peu "laborieux" car il oblige à recopier la valeur "nbéléments" dans A2, et il y a peut-être plus simple?

    Merci d'avance pour toute aide, j'espère ne pas avoir édité pendant que quelqu'un répondait.

    Autre méthode qui n'implique pas de formule excel, mais ça ne marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim nb_elements, ligne_fin As Integer
    nb_elements = Range("L5").End(xlDown).Row
    ligne_fin = 5 + nb_elements
    Selection.AutoFill Destination:=Range("A5:A" & ligne_fin)
    Le bug obtenu est "la méthode AutoFill de la classe Range a échoué"
    (la dernière ligne est surnommée en jaune)

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Points : 877
    Points
    877
    Par défaut
    bonsoir

    a mon avis le problème viens de Selection

    essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim nb_elements, ligne_fin As Integer
     
    nb_elements = Range("L5").End(xlDown).Row
    ligne_fin = 5 + nb_elements
    Range("A5").AutoFill Destination:=Range("A5:A" & ligne_fin)

  3. #3
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 57
    Points : 45
    Points
    45
    Par défaut
    Merci zyhack, tu as trouvé le problème: puisque rien n'était sélectionné ça ne marchait pas.

    De plus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("L5").End(xlDown).Row
    donne directement le numéro de la dernière ligne de la colonne L, donc pas besoin d'ajouter 5.

    Au cas ou un jour ça intéresserait quelqu'un, le code final est donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim nb_elements, ligne_fin As Integer
    ligne_fin = Range("L5").End(xlDown).Row
    Range("A5").AutoFill Destination:=Range("A5:A" & ligne_fin)
    Merci.

  4. #4
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 57
    Points : 45
    Points
    45
    Par défaut
    Désolée j'ai à nouveau un souci qui se rapproche de l'ancien:

    j'aurais besoin d'étirer une formule à partir d'un numéro de ligne et jusqu'à un autre numéro de ligne, je ne sais pas comment écrire le code.

    Par exemple pour étirer la formule de la ligne dont le numéro est contenu dans la variable "début" (un entier) jusqu'à la ligne dont le numéro est contenu dans la variable "fin" (entier aussi):

    Qu'est-ce qui ne va pas dans ce programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("F"&Debut.Autofill Destination:=Range("F"&Debut":G"&fin)
    dès que j'écris cela, en appuyant sur entrée la ligne devient rouge (signal d'erreur), et j'ai le message d'erreur suivant: "erreur de compilation: Attendu: séparateur de liste ou )"

  5. #5
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    bonjour,

    là a chaud l'erreur est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    'Range("F"&Debut.Autofill Destination:=Range("F"&Debut":G"&fin)
    Range("F" & Debut).Autofill Destination:=Range("F" & Debut":G" & fin)

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Points : 877
    Points
    877
    Par défaut
    Bonjour

    il faut bien faire attention à l'ouverture/fermeture des ( ) et des " "

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("F" & debut).AutoFill Destination:=Range("F" & debut & ":F" & fin)

  7. #7
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 57
    Points : 45
    Points
    45
    Par défaut
    Merci!

  8. #8
    Membre actif
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Août 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2014
    Messages : 162
    Points : 207
    Points
    207
    Par défaut
    Bonjour,

    Désolé du déterrage du sujet mais il apparaît parmi les premières réponses lorsqu'on recherche l'information sur le moteur de recherche le plus connus.

    J'ai adapté votre solution en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'Sheets("Feuil1").Range("D2").Autofill = D2 c'est la cellule que l'on va étirer.
    'Destination:= ça va définir jusqu'où on l'étire. Pas la peine de l'appliquer à toutes les lignes de la feuille si on en a pas besoin
    'Range("D2:D = Le départ de la destination. La ligne 1 contient les titres des colonnes.
    ' & Range("A1").End(xlDown).Row = C'est la ligne de la dernière cellule non vide de la colonne A
    Sheets("Feuil1").Range("D2").AutoFill Destination:=Range("D2:D" & Range("A1").End(xlDown).Row)
    Je ne vois pas pourquoi j'utiliserai une nième variable juste pour ça, donc j'ai directement mis "Range("A1").End(xlDown).Row" dans la même ligne que la destination.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/06/2013, 09h42
  2. [XL-2007] Macro comment copier une formule jusqu'à la derniere ligne d'une col
    Par zaza45 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/01/2012, 14h44
  3. étirer une formule jusqu'au bas
    Par huître dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 15/05/2011, 11h30
  4. copier une formule jusqu'à une cellule n (n variable)
    Par Bubale dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/04/2008, 23h46
  5. Etirer une formule suivant le nombre de ligne d'une autre feuille
    Par S l i d e dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 11/08/2007, 23h45

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