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 :

Fonction "autofill" dynamique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 114
    Par défaut Fonction "autofill" dynamique
    Bonjour à tous,

    Je suis relativement nouveau avec VBA et je cherche dans toute sorte de forum pour trouver la réponse à ma question mais sans résultat concluant jusqu'à présent.

    À l'aide de ma macro je veux remplir les cellules d'une colonne vers le bas jusqu'à la dernière cellule de la colonne adjacente.

    Voici un bout de code pour vous aider à vous placer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      Range("I65536").Select
        Selection.End(xlUp).Select
        Selection.AutoFill Destination:=Range(Range("I65536").End(xlUp).Row & Range("H65536").End(xlUp).Row)
    Dans le fond, je veux trouver la dernière cellule remplie à laquelle je dois remplir/copier l'information de la colonne adjacente.

    Est-ce que quelqu'un peut m'aider?

    Merci

  2. #2
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut,

    Pour récupéré le numéro de la dernière ligne remplie j'utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Ws as worksheet
    Dim DerLig as long
     
    Set Ws = sheets("LeNomDeTaFeuille")
    DerLig= ws.cells(ws.columns(8).cells.count,8).end(xlup).row
    Adapte le nom de ta feuille
    La variable DerLig fonctionne sous le même principe que ton select sur base de la colonne N°8 donc H (C'est donc bien ta référence ?)
    Le Columns.cells.count t'affranchi des différences de N° de ligne entre XL2003 et XL2010.
    Il te reste à copier la formule sur la plage, si la formule de référence est en I2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ws.cells(2,8).copy destination:=ws.range(ws.cells(2,9),ws.cells(derlig,9))
    Ecrit à la volée, j'espère ne pas avoir fait de coquilles parce que pas testé

    A+

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 114
    Par défaut
    C'est presque ça en fait. J'ai oublié de mentionner quelque chose c'est pour ça.

    Supposons que la dernière cellule rempli de la colonne 'H' est la H200 et que la dernière cellule rempli de la colonne 'I' est la I190, je dois copier la cellule I190 jusqu'à la cellule I200 pour rejoindre la cellule H200.

    Alors Fvandermeulen, ta solution est presque complète cependant pour le moment le bout de code que tu m'as offert me fait copier le cellule I2 jusqu'à I200, pour revenir à mon exemple précédent.

    Il est a mentionné que la cellule qui est à copier ne sera jamais la même plus mon travail avance dans le temps. Puisque je fait une compilation de facture.

    J'espère être assez clair pour ne pas faire perdre de temps à personne.

    Je suppose que dans ce bout de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ws.cells(2,8).copy destination:=ws.range(ws.cells(2,9),ws.cells(derlig,9))
    Il y a les termes "2" qui ne sont pas ce que je dois écrire pour obtenir ce que j'ai besoin.

  4. #4
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Essaie comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        With Ws
            'Je détermine le numéro de la dernière ligne renseignée dans la colonne H
            DerLigH = .Range("H" & .Rows.Count).End(xlUp).Row
            'Je détermine le numéro de la dernière ligne renseignée dans la colonne I
            DerLigI = .Range("I" & .Rows.Count).End(xlUp).Row
            'J'effectue la recopie incrémentée dans la colonne I
            .Range("I" & DerLigI).AutoFill Destination:=.Range(.Range("I" & DerLigI), .Range("I" & DerLigH))
        End With
    Cordialement.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 114
    Par défaut
    Excellent ça fonctionne.

    Maintenant comment faire pour fusionner les cellules dernièrement copiées? Il ne me reste que ça à faire.

    Merci d'avance

  6. #6
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Je ne comprends pas vraiment ce que tu cherches à faire.
    Avec la fusion, tu ne conserves que la donnée de la cellule supérieure de la plage fusionnée (toutes les autres données seront supprimées).
    Je ne vois pas l'intérêt d'avoir copié ces données.

    Cordialement.

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

Discussions similaires

  1. Fonction Replace pour quote
    Par piero53 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 17/11/2009, 01h19

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