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 :

Copier 3 cellules d'une colonne vers une autre [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2010
    Messages : 49
    Points : 43
    Points
    43
    Par défaut Copier 3 cellules d'une colonne vers une autre
    Bonjour,
    j'ai une feuille excel contenant dans une seule colone des données regroupées en bloc de 3:

    nom1
    valeur1.1
    valeur1.2
    nom2
    valeur2.1
    valeur2.2

    Je voudrais etre en mesure de copier ce bloc de 3 cellules dans une autre colone de façon a avoir cette structure

    nom1 nom2
    valeur1.1 valeur2.1
    valeur1.2 valeur2.2

    comment je pourrais procéder
    merci d'avance

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour

    Une proposition

    Données initiales: A2:Ax (avec x=3n+1, n: nombre de groupes) et en A1 titre de la colonne. Ici tu peux adapter

    Les groupes sont composés par 3 cellules

    Adapte le nom de la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Test()
    Dim LastLig As Integer, i As Integer
     
    Application.ScreenUpdating = False
    With Sheets("Feuil6")                            ' à adapter
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        For i = LastLig To 7 Step -3
            .Range(.Cells(i - 2, 1), .Cells(i, 1)).Cut
            .Range("B2:B4").Insert
        Next i
    End With
    End Sub
    PS: Attention quand même si le nombre de groupes dépasse le nombre de colonnes maximales de ta feuille.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2010
    Messages : 49
    Points : 43
    Points
    43
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Test()
    Dim LastLig As Integer, i As Integer
     
    Application.ScreenUpdating = False
    With Sheets("Feuil6")                            ' à adapter
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        For i = LastLig To 7 Step -3
            .Range(.Cells(i - 2, 1), .Cells(i, 1)).Cut
            .Range("B2:B4").Insert
        Next i
    End With
    End Sub
    Si je comprends bien le Lastlig va chercher la dernière ligne avec des données
    mais pourquoi le 7, si je veux que l'opération se fasse pour tout les groupe de 3 sauf le premier je devrais mettre 4(je n'aie pas d'entête)????

    Dernier point je voudrais que le troisième groupe soit dans la colone C le 4e dans la colone D. A première vu, on dirait que le code va copier le groupe de 3 toujours dans la colone B et toujours dans les 3 même cellules??

    merci pour ton aide
    mathieu

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Si tes données commencent en A1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Test()
    Dim LastLig As Integer, i As Integer
     
    Application.ScreenUpdating = False
    With Sheets("Feuil6")                                                ' à adapter
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        For i = LastLig To 6 Step -3
            .Range(.Cells(i - 2, 1), .Cells(i, 1)).Cut
            .Range("B1:B3").Insert
        Next i
    End With
    End Sub
    Pourquoi j'arrête en ligne 6?
    Je ne veux pas traiter le premier groupe

    PS
    Je copie le dernier groupe en B, j'insère une colonne (le dernier devient en C) et je copie l'avant dernier groupe en B...etc

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2010
    Messages : 49
    Points : 43
    Points
    43
    Par défaut
    Bon,
    Je vois bien que mon dernier message, que je viens d'effacer, était mal ciblé.

    With Sheets("Feuil6")

    C'est la ligne qui pose problème, j'ai essayé avec le nom de la feuille(celui que je lui aie donné) et le nom par défaut et aucun des 2 fonctionnent

    je reçois l'erreur d'exécution 9 - L'indice n'appartient pas à la sélection

    Étant donné que je ne connais pas grand chose a vba, je lance simplement ma routine "dans la feuille" voir l'image ci-joint

    Je sais pas si je suis plus clair
    merci
    Images attachées Images attachées  

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Selon ton image
    ou bien

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2010
    Messages : 49
    Points : 43
    Points
    43
    Par défaut
    J'ai essayé les 2 et aucun ne fonctionnait, j'ai modifié le code de façon à ne pas avoir besoin de cette ligne. Par contre, après avoir rouler la routine pas à pas, la ligne 9 pose problème.
    J'ai réussi à copier quelques paquet de 3 cellules mais là j'ai une

    erreur d'exécution 1004
    erreur défini par l'application ou l'objet.

    J'ai placé des espions et il prend bien la dernière cellule, le i se décrémente bien mais là je suis bloqué

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Test()
    Dim LastLig As Integer, i As Integer
     
    Application.ScreenUpdating = False
                                                  ' à adapter
        LastLig = Feuil6.Cells(Feuil6.Rows.Count, "A").End(xlUp).Row
        For i = LastLig To 6 Step -3
            Feuil6.Range(Feuil6.Cells(i - 2, 1), Feuil6.Cells(i, 1)).Cut
            Feuil6.Range("B1:B3").Insert
        Next i
     
    End Sub
    Encore merci
    Prend ton temps pour répondre je part pour la fin de semaine

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2010
    Messages : 49
    Points : 43
    Points
    43
    Par défaut
    Bon j'ai trouvé,

    je sais pas pourquoi mais il considèrait que les cases vides étaient utilisé donc le nombre de colones maximum était atteint

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

Discussions similaires

  1. [XL-2007] Récupérer valeurs d'une colonne vers une liste déroulante sur autre colonne d'une nouvelle feuille
    Par redhotchilipeppers dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/07/2014, 17h26
  2. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  3. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  4. copier une colonne d'une BDD1 vers une BDD2
    Par brendatours dans le forum Débuter
    Réponses: 1
    Dernier message: 09/03/2009, 16h20
  5. Copier une colonne d'une table vers une autre
    Par Jb_One73 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/08/2008, 15h22

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