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 :

VBA : etendre les formules de la derniere colonne d'un tableau


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 76
    Points : 53
    Points
    53
    Par défaut VBA : etendre les formules de la derniere colonne d'un tableau
    Bonjour,

    Je cherche à créer une macro excel qui étire des formules d'un tableau à partir de la derniere colonne remplie.


    J'ai uploader une image pour l'exemple :



    J'aimerais donc un macro qui étire les formules de la derniere colonne remplie (08/09/09) d'un colonne vers la droite.
    Puis, au prochain lancement de la macro, elle étirerait les formules de la derniere colonne rempli (09/09/09) etc...

    Je n'arrive pas à créer la macro pour selectionner et copier exactement la dernière colonne, qu'elqu'un peu m'aider?

    merci

    cdt

  2. #2
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour,

    Tu peux utiliser la méthode AutoFill

    Un exemple perso à adapter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ' ----------- Recopier la formule
    Dim mycell1 As Range: Set mycell1 = Cells(ligne, colonne)
    Dim maformule As Range
    Set maformule = Union(Cells(mycell1.Row - 1, 7), Cells(mycell1.Row, 7))
    Range(Cells(mycell1.Row - 1, 7).Address).AutoFill Destination:=Range(maformule.Address)
    Set maformule = Nothing
    Un autre exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     i = Range("A1").End(xlUp)row
    Range("U2").FormulaLocal = "=NB.SI(A:A;A2)>1"
    Range("U2").AutoFill Destination:=Range("U2:U" & i)
    Edit : Bonjour Diude54

  3. #3
    Membre actif
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Points : 283
    Points
    283
    Par défaut
    Voici un exemple, à adapter à ton cas bien sur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub col()
    Dim ColD As Long, Derlig As Long
    ColD = Range("A5").End(xlToRight).Column
    Derlig = Cells(65536, ColD).End(xlUp).Row
    Range(Cells(1, ColD), Cells(Derlig, ColD)).AutoFill Destination:=Range(Cells(1, ColD), Cells(Derlig, ColD + 1)), Type:=xlFillDefault
    End Sub

  4. #4
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 76
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par diude54 Voir le message
    Voici un exemple, à adapter à ton cas bien sur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub col()
    Dim ColD As Long, Derlig As Long
    ColD = Range("A5").End(xlToRight).Column
    Derlig = Cells(65536, ColD).End(xlUp).Row
    Range(Cells(1, ColD), Cells(Derlig, ColD)).AutoFill Destination:=Range(Cells(1, ColD), Cells(Derlig, ColD + 1)), Type:=xlFillDefault
    End Sub
    Merci pour tous vos exemples.

    je ne suis pas un gros craque en VBA, j'ai donc essayé celle la (qui me semblait plus simple lol)

    Ca marche à une exeption, J'aimerais pouvoir choisir quel ligne étendre (Par exemple la ligne 1 et 3, ou 2 et 4 etc...)

    Je ne vois pas comment faire..

    merci de votre aide

  5. #5
    Membre actif
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Points : 283
    Points
    283
    Par défaut
    Si tu places une input box au debut tu peux choisir le n° de ligne,

    Sinon tu peux adapter dans le code directement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub col()
    Dim ColD As Long, Derlig As Long
    ColD = Range("A5").End(xlToRight).Column
    'Derlig = Cells(65536, ColD).End(xlUp).Row
    Range(Cells(1, ColD), Cells(Derlig, ColD)).AutoFill Destination:=Range(Cells(1, ColD), Cells(Derlig, ColD + 1)), Type:=xlFillDefault
    End Sub
    Genre tu saisi à la place des valeurs en rouge le numero de ligne, attention, si tu saisi 1 et 3, tu vas étirer de la ligne 1 à 3

    Voici une macro qui demande au départ les lignes (comme tu l'as demandé ).
    Une Inputbox apparait au début et demande les n° de ligne, il faut séparer ces n° par un ;

    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
    Sub Etirer()
    Dim Tableau
    Dim Lignes As String
    Dim ColD As Long
     
    Lignes = InputBox("Saisissez les lignes séparées par un ; ", "Choix des lignes")
    Tableau = Split(Lignes, ";")
    On Error GoTo suite
    For i = 0 To UBound(Tableau)
    l = Val(Tableau(i))
    ColD = Cells(l, 1).End(xlToRight).Column
    Cells(l, ColD).AutoFill Destination:=Range(Cells(l, ColD), Cells(l, ColD + 1)), Type:=xlFillDefault
    suite:
    Next i
     
    End Sub

  6. #6
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 76
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par diude54 Voir le message
    Voici une macro qui demande au départ les lignes (comme tu l'as demandé ).
    Une Inputbox apparait au début et demande les n° de ligne, il faut séparer ces n° par un ;

    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
    Sub Etirer()
    Dim Tableau
    Dim Lignes As String
    Dim ColD As Long
     
    Lignes = InputBox("Saisissez les lignes séparées par un ; ", "Choix des lignes")
    Tableau = Split(Lignes, ";")
    On Error GoTo suite
    For i = 0 To UBound(Tableau)
    l = Val(Tableau(i))
    ColD = Cells(l, 1).End(xlToRight).Column
    Cells(l, ColD).AutoFill Destination:=Range(Cells(l, ColD), Cells(l, ColD + 1)), Type:=xlFillDefault
    suite:
    Next i
     
    End Sub
    Re-bonjour,


    Merci pour toutes ces lignes de codes, ca marche bien. J'ai juste enlevé l'inputbox pour metre moi meme mes lignes à selectionner.


    Il reste encore un point sur lequel je calle . Je ne l'avais pas dit précedement, mais il peut arrivé que certaines lignes soient précédement vide (exemple en image).


    Du coup, quand j'exécute la macro il me rempli pas la derniere colonne, mais la 1er vide...

    comment changer la macro?
    merci

Discussions similaires

  1. VBA : mettre une formule dans toute une colonne de la ligne Z2 à Z30
    Par Alain777 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 04/05/2015, 21h54
  2. [XL-2010] Etendre une formule sur lignes et colonnes multiples
    Par Wishguu dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 10/02/2014, 18h28
  3. Réponses: 1
    Dernier message: 30/05/2012, 15h42
  4. enlever la premiere et la derniere colonne dans un tableau
    Par titou_170 dans le forum Calcul scientifique
    Réponses: 9
    Dernier message: 24/11/2010, 16h46
  5. supression de la derniere colonne d'un tableau
    Par bouddine dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/02/2008, 10h24

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