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 copier/coller colonne- insérer nouvelle colonne


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 22
    Points : 11
    Points
    11
    Par défaut Macro copier/coller colonne- insérer nouvelle colonne
    Bonjour à tous,

    J'ai un fichier Excel dans lequel mes colonnes sont des années :

    Colonne A = Année 2007 Prévu
    Colonne B = Année 2007 Payé

    Les lignes de chacune de ces colonnées contiennent des formules.

    Mes deux dernières colonnes sont :
    Colonne X : Total Prévu
    Colonne Y : Total Payé

    Je souhaite faire une macro qui me permet d'insérer au fil du temps des années, soit 2 colonnes "Année XXXX Prévu" et "Année XXXX Payé" avant mes colonnes "total". Ces 2 colonnes nouvellement créees doivent être un "copier/coller" des 2 dernières colonnes situées avant mes colonnes total.

    Je me perds dans le comptage des colonnes en VBA.Pour faire simple je voudrais copier les 2 dernières colonnes situées avant les 2 dernières colonnes de mon tableau, et les insérer avant les 2 dernières colonnes de mon tableau! Dis comme ça cela parait simple mais en fait.....Dur dur.

    Quelqu'un peut me donner un coup de main?

    Merci par avance.

    Merci de votre aide.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim c As Range
        With Worksheets("Feuil1").Rows(1)
            Set c = .Find("Total")
            If Not c Is Nothing Then
                NoCol = c.Column
            End If
            MsgBox NoCol
        End With
        Columns(NoCol).Insert Shift:=xlToRight
        Columns(NoCol).Insert Shift:=xlToRight
    Insert deux colonnes avant la colonne "Total"

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Bonjour ouskel'n'or,

    Merci beaucoup pour ta réponse. J'ai essayé ton code. Lorsque je lance la macro j'ai un message Excel avec un bouton "OK" et lorque je clique sur ce bouton j'ai un message d'erreur d'exécution '1004' le debogeur me surligne en jaune la ligne de code suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Columns(NoCol).Insert Shift:=xlToRight
    Sais-tu quel peut-être le problème?

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Oui, j'ai supposé qu'il existait une colonne "Total". Corrige ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim c As Range, NoCol as byte 'integer sur 2007
        With Worksheets("Feuil1").Rows(1)
            Set c = .Find("Total")
            If Not c Is Nothing Then
                NoCol = c.Column
                Columns(NoCol).Insert Shift:=xlToRight
                DoEvents
                Columns(NoCol).Insert Shift:=xlToRight
                DoEvents
            End If
    End With
    DoEvents n'est peut-être pas nécessaire mais ne nuit pas.
    Tu dis

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Tu as bien supposé j'ai une colonne total. ton nouveau code me supprmie la boite de message et c'est mieux. quant au message d'erreur c'est juste que mon total est Row7 et non en Row1.
    Pour que ma macro copie les 2 colonnes précédent les 2 colonnes vides insérées, j'ai modifié ton code comme suit :
    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
    Dim c As Range, NoCol As Byte 'integer sur 2007
        With Worksheets("Budget Global au réel").Rows(7)
            Set c = .Find("Total")
            If Not c Is Nothing Then
                NoCol = c.Column
                Columns(NoCol).Insert Shift:=xlToRight
                Columns(NoCol - 1).Select
                Selection.Copy            DoEvents
                Columns(NoCol).Insert Shift:=xlToRight
                Columns(NoCol - 1).Select
                Selection.Copy
                DoEvents
            End If
    End With
    Il me fait bien un copier des deux colonnes que je veux mais j'ai une colonne vide avant mon total. Je peux corriger le code ou il faut que j'ajoute du code pour supprimer ma colonne vide avant le total?

    Merci par avance.

  6. #6
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    c'est bon. c'est résolu. en mauvais débutant que je suis je faisais n'importe quoi.
    Au lieu d'insérer 2 colonnes vides puis faire un copier des 2 colonnes précédentes puis un coller dans les colonnes vides insérées, il fallait copier ma dernière colonne année et l'insérer devant mon total grâce à ton code!

    Merci beaucoup.

    Bon courage à tous

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

Discussions similaires

  1. [XL-2007] Macro copier/coller colonnes de dimensions variables
    Par wamkey dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/01/2014, 04h06
  2. Debutant copier/coller valeur dernier ligne colonne 13
    Par floflo83 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/11/2009, 15h31
  3. Réponses: 5
    Dernier message: 19/10/2009, 10h41
  4. copier/coller de formules sur colonnes multiples
    Par Frayer dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/07/2009, 11h45
  5. copier/coller lignes sous condition colonne vers autre feuille
    Par juniorglobal08 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/05/2009, 17h29

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