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 :

Macro copie colonne la plus à droite avec des données pour recopier la formule dans la colonne suivante


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2011
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 100
    Points : 54
    Points
    54
    Par défaut Macro copie colonne la plus à droite avec des données pour recopier la formule dans la colonne suivante
    Bonjour à tous,

    Je cherche à faire une macro (très simple) qui me recopie les formules d'une colonne dans la colonne d'à côté afin d'incrémenter pour chaque jour (un jour par colonne) mes résultats.

    J'ai réalisé une macro par enregistrement qui fonctionne correctement à un bémol près, la macro copie systématiquement les formules de la même colonne vers la colonne de droite alors que je voudrais que la macro copie la colonne la plus à droite qui contient une formule/valeur afin de recopier les formules dans la colonne suivante.

    J'espère avoir été suffisamment clair.

    Merci d'avance pour vos contributions.

    Cordialement

    Stueur666

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 124
    Points : 193
    Points
    193
    Par défaut
    Bonjour,

    Le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("a1").End(xlToRight).Column
    te retournera le numéro de colonne de la dernière cellule non vide en partant de A1 vers la droite.

    Ca te permettra d'adapter ton code avec des :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(1,Range("a1").End(xlToRight).Column +1)
    par exemple

  3. #3
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Essaie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test2()
        Dim Col As Integer
        Col = Cells.Find("*", , , , xlByColumns, xlPrevious).Column
        Columns(Col).Copy
        Columns(Col + 1).PasteSpecial xlPasteFormulas
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  4. #4
    Membre du Club
    Inscrit en
    Novembre 2011
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 100
    Points : 54
    Points
    54
    Par défaut
    Bonjour et merci,

    J'avoue ne pas très bien comprendre vos explication...

    voici ma macro actuelle (produite par enregistrelment) :

    Sub Macro1()
    '
    ' Macro1 Macro

    Range("C4").Select
    ActiveCell.FormulaR1C1 = "=RC[-1]+1"
    Range("B5:B18").Select
    Selection.Copy
    Range("C5").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    Range("B4:B18").Select
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    End Sub


    Et le fichier que je veux modifier est en fichier joint.

    Merci d'avance pour votre aide

  5. #5
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Ou je me trompe, ou tu recopies les valeurs, pas les formules :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test2()
        Dim Col As Integer
        Col = Cells.Find("*", , , , xlByColumns, xlPrevious).Column
        Range(Cells(5, Col), Cells(5, Col).End(xlDown)).Copy
        Cells(5, Col + 1).PasteSpecial xlPasteValues
        Cells(4, Col + 1) = Cells(4, Col) + 1
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2011
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 100
    Points : 54
    Points
    54
    Par défaut
    Merci beaucoup Daniel.C

    Cela fonctionne parfaitement!

    Je clos le sujet

    Cordialement

    Stueur

  7. #7
    Membre du Club
    Inscrit en
    Novembre 2011
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 100
    Points : 54
    Points
    54
    Par défaut
    Bonjour à tous,

    Après de multiples vérification il s'avère que la macro ne fonctionne pas comme je le souhaite.

    En effet, je souhaite copier la première colonne (celle contenant les formules) puis faire une copier coller(formules) sur la colonne la plus à droite, puis copier/coller(valeur) ma colonne la plus à droite.

    Merci d'avance pour l'aide que vous pourrez m'apporter.

    Cordialement

    Stueur

  8. #8
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Après de multiples vérification il s'avère que ton énoncé ne correspond pas à l'énoncé initial.
    puis faire une copier coller(formules) sur la colonne la plus à droite, puis copier/coller(valeur)
    Pourquoi ne pas faire directement et collage spécial Valeurs ? Qu'appelles-tu "première colonne" la colonne A ? Peux-tu donner un exemple ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  9. #9
    Membre du Club
    Inscrit en
    Novembre 2011
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 100
    Points : 54
    Points
    54
    Par défaut
    Bonjour Daniel.C, bonjour aux autres aussi,

    Désolé de ne pas avoir été suffisamment clair dans mon énoncé.
    J'ai remis le fichier avec des explications plus détailler de ce que je souhaite.

    Merci d'avance pour l'aide que vous pourrez m'apporter

    Cordialement

    Stueur

  10. #10
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Attache la macro suivante à ton bouton, sachant que les lignes 15-19 ne sont pas traitées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test2()
        Dim Col As Integer
        Application.ScreenUpdating = False
        Col = Cells.Find("*", , , , xlByColumns, xlPrevious).Column + 1
        Range(Cells(5, 2), Cells(13, 2)).Copy
        Cells(5, Col).PasteSpecial xlPasteFormulas
        Range(Cells(5, Col), Cells(13, Col)).Copy
        Cells(5, Col).PasteSpecial xlPasteValues
        Cells(4, Col) = Cells(4, Col - 1) + 1
        Application.ScreenUpdating = False
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  11. #11
    Membre du Club
    Inscrit en
    Novembre 2011
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 100
    Points : 54
    Points
    54
    Par défaut
    Merci Daniel.C!

    Ca a l'air de fonctionner correctement!

    Je clos le sujet.

    Merci encore!

    Cordialement

    Stueur

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

Discussions similaires

  1. [XL-2010] Macro pour recopier une formule dans une cellule
    Par benadry dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 20/09/2013, 12h47
  2. Réponses: 1
    Dernier message: 01/04/2010, 22h23
  3. Réponses: 2
    Dernier message: 31/03/2009, 14h22
  4. Réponses: 2
    Dernier message: 24/12/2006, 12h01
  5. Réponses: 7
    Dernier message: 22/09/2006, 15h52

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