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 :

Copie jusqu'à dernière ligne avec autofill


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Gestionnaire de Portefeuille
    Inscrit en
    Juillet 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestionnaire de Portefeuille

    Informations forums :
    Inscription : Juillet 2017
    Messages : 15
    Par défaut Copie jusqu'à dernière ligne avec autofill
    Bonjour à tous,

    Cela faitt plusieurs jours que je parcours ce forum et d'autres pour trouver une solution à mon problème mais je n'arrive pas (malgré de nombreux essai) à adapter mon code avec ce que j'ai pu trouver jusqu'à présent...

    Mon problème est simple :

    Récupérer une colonne dans une feuille la coller dans une autre et appliquer les formules des colonnes adjacentes jusqu'à la fin de la colonne que l'on vient de coller. Un peu plus détaillé je copie la colonne C en valeur à partir de C4 jusqu'à Cx (x étant le nombre de ligne qui change à chaque fois). Ensuite je veux reproduire ce qui est fait avec la poignée de recopie pour les colonnes A:B et D:L.

    Voici le code que j'ai fait mais qui ne fonctionne 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
    Sub Analyse_Portefeuille()
     
    Dim Extract As Worksheet
    Dim Pick As Worksheet
    Dim Cel As Range
    Dim Colonne As Integer
    Dim DerLigC As Range
     
     
    Set Extract = Worksheets("Extract_Jump")
    Set Pick = Worksheets("Top_Picks")
     
    Extract.Select
    Set Cel = Cells.Find(what:="Code ISIN", LookIn:=xlValues, lookat:=xlWhole)
    If Not Cel Is Nothing Then
        Cells(1, Cel.Column).Resize(Cells(Rows.Count, Cel.Column).End(xlDown).Row).Select
    Else
        MsgBox "Pas trouvé le code ISIN "
        Exit Sub
      End If
    Selection.Cut
    Columns(1).Insert
     
    Range("A2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Worksheets("Top_Picks").Activate
    Range("C4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
     
    DerLigC = Worksheets("Top_Picks").Range("C4" & Rows.Count).End(xlUp).Row
    'DerLig = Pick.Cell(Pick.Columns(3).Cells.Count, 3).End(xlUp).Row
     
    'With DerLigC = Range("C" & Rows.Count).End(xlUp).Row
        'End With
     
    Range("A4").Select
    Selection.AutoFill Destination:=Range("A4:A" & DerLigC)
     
    Range("D4:L4").Select
    Selection.AutoFill Destination:=Range("E4:M" & DerLigC)
    Range("E4:M" & DerLigC).Select
     
     
     
    End Sub
    Désolé je n'arrive pas à trouver comment mettre les balises...

    En fait le problème survient à la ligne Selection.AutoFill Destination:=Range("A4:A" & DerLigC). Le seul problème est que je n'arrive pas à formaliser la référence de la dernière ligne non vide dans l'objet range pour la fonction autofill... J'ai laissé les commentaires que j'avais mit qui correspondent à d'autres essai infructueux également.

    Merci de votre aide, n'hésitez pas à me dire s'il faut plus de précisions.

    Romain

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour Romain,

    La variable DerLigC est déclarée comme Range. Déclare la variable comme long/integer puis DerLigC = Cells(Columns(3).Cells.Count, 3).End(xlUp).Row.

    Bonne journée
    Sophie
    Dernière modification par Invité ; 07/10/2018 à 15h59. Motif: Ajout des balises [C] ... [/C]

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 114
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La méthode AutoFill n'est pas la seule façon de recopier une formule. Il est plus simple et plus rapide d'appliquer la formule directement sur la plage de cellules.
    Exemple simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub t()
     Dim rng As Range
     Set rng = ThisWorkbook.Worksheets("Feuil3").Range("F2:F1000")
     rng.Formula = "=C2*D2+1"
     Set rng = Nothing
    End Sub
    A lire éventuellement ces deux billets Ecrire une formule dans Excel à l'aide d'une procédure VBA et Comment écrire une formule plus complexe dans une cellule ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Membre averti
    Homme Profil pro
    Gestionnaire de Portefeuille
    Inscrit en
    Juillet 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestionnaire de Portefeuille

    Informations forums :
    Inscription : Juillet 2017
    Messages : 15
    Par défaut
    Bonjour Sophie, merci de ta réponse qui fonctionne. Ce n'est pas de chance car j'avais utilisé ta méthode mais surement que la déclaration de variable ou la syntaxe avait un petit problème.

    Est-il possible de faire fonctionner autofill sur plus colonne en même temps plutôt que sur une seule. Car si j'écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("D4:L4").Select
    Selection.AutoFill Destination:=Range("E4:L" & DerLigC)
    Cela ne fonctionne pas.

    Merci Philippe pour les infos, en effet cette solution est aussi viable mais j'utilise des formules bloomberg un peu compliqués parfois je préfère rester sur le classique autofill même si ce n'est pas toujours très propre...

    Bien à vous,

    Romain

  5. #5
    Invité
    Invité(e)
    Par défaut
    De mémoire c'est possible. Je pense que l'erreur vient de la sélection de tes colonnes

    Tu sélectionnes ("D4:L4") mais tu recopies sur ("E4:L" & DerLigC). On devrait plutôt avoir : Selection.AutoFill Destination:=Range("D4:L" & DerLigC).

    Cordialement,
    Sophie
    Dernière modification par Invité ; 07/10/2018 à 15h58. Motif: Ajout des balises [C] ... [/C]

  6. #6
    Membre averti
    Homme Profil pro
    Gestionnaire de Portefeuille
    Inscrit en
    Juillet 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestionnaire de Portefeuille

    Informations forums :
    Inscription : Juillet 2017
    Messages : 15
    Par défaut
    Ok super, j’essayerai à l'occasion, en tout cas là ça marche colonne par colonne et ce n'est pas long donc pas de soucis.


    Si je peux me permettre une dernière question... :

    Dans mes colonnes B et L j'ai des recherchev sauf que quand je réorganise mes colonnes dans ma deuxième feuille cela change la plage de cellule des recherchev malgré le fait que je les fige.

    Existe-il une méthode pour empêcher ce décalage ? Ou dois-je entrer la formule que je veux dans une variable directement dans mon code ?

    Merci,

    Romain.

  7. #7
    Membre averti
    Homme Profil pro
    Gestionnaire de Portefeuille
    Inscrit en
    Juillet 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestionnaire de Portefeuille

    Informations forums :
    Inscription : Juillet 2017
    Messages : 15
    Par défaut
    Bon avec l'application d'une formule à la cellule correspondante cela marche sans soucis.

    Cependant je suis curieux de savoir s'il est possible de passer outre cette méthode...

    Romain

  8. #8
    Invité de passage
    Homme Profil pro
    Contrôle de gestion
    Inscrit en
    Janvier 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Contrôle de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2018
    Messages : 1
    Par défaut Mettre en place un autofill sur plusieurs onglets à renseigner
    J'essaye de faire glisser des formules sur plusieurs onglets, je pensais que cette technique serait la plus probante mais il n'en est rien.

    Pourriez vous m'indiquer une méthode qui puisse résoudre mon problème au vue du code que j'ai essayé de construire. A savoir que chaque onglet est construit de la même manière.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub
    Dim Tableau As Variant
     
    Tableau = Array("sheet1", "Sheet2", "Sheet3", "Sheet4")
     
    Dim DernLigne As Long
     
    DernLigne = Range("A" & Rows.Count).End(xlUp).Row
    With Tableau
    Range("K8:R8").AutoFill Destination:=Range("K8:R" & DernLigne)
     
    End With
    End Sub

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

Discussions similaires

  1. afficher 10 dernières lignes avec fgets
    Par Invité dans le forum Langage
    Réponses: 9
    Dernier message: 23/05/2011, 10h29
  2. Copie à la dernière ligne d'un tableau
    Par chipster008 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/04/2011, 15h14
  3. Trouver la dernière ligne avec nombre positif
    Par andrea0 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 11/02/2011, 20h32
  4. Copier Formule jusqu'à dernière ligne
    Par mattwarend dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 05/12/2008, 23h40
  5. [MySQL] sélection des dernières lignes avec affichage aléatoire
    Par nabmoah dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/08/2008, 23h57

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