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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 : 33
    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 176
    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 176
    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 : 33
    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 : 33
    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.

+ 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