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 un ensemble de colonnes verticales et coller horizontalement


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 11
    Par défaut Copier un ensemble de colonnes verticales et coller horizontalement
    Bonjour ,
    Tout d'abord Merci a tous ceux qui auront la patience et la gentillesse de lire et de m'apporter l'aide nécessaire

    Je cherche une macro qui puisse copier un ensemble de colonne verticale et coller horizontalement dans un autre fichier .Voici le bout de code qui me permet de sélectionner le fichier que je souhaite traiter il y'en a plusieurs ( FCH , FLH , CFE ect ...)
    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
    17
    18
    19
    20
    21
    22
    23
    24
    Lancement = MsgBox("Souhaitez-vous traiter des fichiers GCR ?", _
                                 vbYesNo + vbQuestion, "CGR")
    '
    ' Ouverture d'une msg box qui permet la selection des Fichiers CGR à traiter
    '
    '
    If Lancement = vbYes Then
        Set Fd = Application.FileDialog(msoFileDialogOpen)
        With Fd
            .Title = "Choisissez les Fichiers CGR que vous voulez traiter"
            .InitialFileName = "O:\OUTILS\SI_C3P.vqr\FTTH\cgr\macro Nadine\tempo"
            .Filters.Clear
            .AllowMultiSelect = True
            If .Show <> 0 Then
               For Each VarItems In .SelectedItems
                    ReDim Preserve Nom(k)
                    Nom(k) = VarItems
                    k = k + 1
                    nbFichiers = nbFichiers + 1
                Next
            Else
                If MsgBox("Vous n'avez selectionné aucun fichier, voulez-vous recommencer?", vbYesNo) = vbNo Then Exit Sub
            End If
        End With
    et voici le code qui me permet de sélectionner et copier l'ensemble de colonne verticale de se fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     For k = 1 To nbFichiers
     
                aFichier = Right(Nom(k - 1), 21)
     
    Workbooks.OpenText Filename:= _
            "C:\Users\FFPF2494\Desktop\macro Nadine\tempo\" & aFichier, Origin _
            :=xlMSDOS, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0 _
            , 1), Array(4, 1), Array(13, 1), Array(18, 1), Array(29, 1), Array(37, 1), Array(44, 1), _
            Array(50, 1), Array(59, 1), Array(69, 1)), TrailingMinusNumbers:=True
     
     
        'copie de l'ensemble de colonne verticale 
        Range("G3:G94").Select
        Selection.Copy
    ce code ci dessus me permet de copier mon ensemble de colonne verticale d'un fichier que j'ai choisi grâce à la boite de dialogue , mais je recherche un code qui me permettrai de les coller horizontalement dans un autre fichier après son ouverture ( le code pour l'ouvrir ci dessous )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Ouverture_du_fichier_rdv_DISPO()
     
    On Error Resume Next
     
    FileExists = (GetAttr("RDV Dispo.xls"))
     
    If FileExists = vrai Then
     
       MsgBox ("Le fichier existe voulez vous l'ouvrir??")
     
       Application.Workbooks.Open "O:\OUTILS\SI_C3P.vqr\FTTH\cgr\macro Nadine\RDV dispo.xls"
     
       End If
    sachant qu'il doit le coller dans une ligne précise du tableau .
    Pour ce qui est de comment retrouver cette ligne :
    Le fichier qui contient la ligne verticale que j'ai copié se nomme FCH , donc la ligne verticale que je vais coller horizontalement dans le fichier que je viens d'ouvrir dans ce dernier code doit être coller dans la ligne FCH .
    N'hésitez pas à me demander si ce n'est pas clair.

    Merci mes amis informaticiens

  2. #2
    Membre confirmé
    Avatar de dj_benz
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 178
    Par défaut
    Bonjour,
    D'après ce que j'ai compris, ton problème consiste à faire un copier/coller-transposé, d'un fichier à un autre?
    Si c'est ça, voici comment faire:
    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
     
        'Je suppose que tu as copié tes cellules depuis ton fichier source
     
        'Declaration fichier destination
        Dim wbOut as Workbook
        Dim wsOut as Worksheet
        Set wbOut = Application.Workbooks.Open "O:\OUTILS\SI_C3P.vqr\FTTH\cgr\macro Nadine\RDV dispo.xls"
        Set wsOut = wbOut.Sheets(1) 'je suppose que c'est la premiere feuille
     
        wsOut.Range("D1").Select 'choisir la bonne ligne
     
        Selection.PasteSpecial _
            Paste:=xlPasteAll, _
            Operation:=xlNone, _
            SkipBlanks:= False, _
            Transpose:=True
    A adapter plus précisément pour ton besoin.

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 11
    Par défaut ça ne marche pas HELPPPPPPP

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Une piste que tu va devoir adapter mais qui te montre comment transposer un tableau. Fais ce test sur un classeur vierge en entrant des valeurs en colonnes A à C de la feuille "Feuil1" et une série de valeurs en colonne A de feuille "Feuil2" ou tu aura glissé parmis elles la valeur "FCH" :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    Sub Test()
     
        Dim Colonnes As Range
        Dim Plage As Range
        Dim Cel As Range
     
        'pour le test, de la colonne A à C en feuille "Feuil1"
        With Worksheets("Feuil1")
     
            Set Colonnes = .Range(.Cells(1, 1), .Cells(.Rows.Count, 3).End(xlUp))
     
        End With
     
        'le résultat est transposé en feuille "Feuil2" au niveau de la cellule
        'contenant "FCH" à partir de la colonne B
        With Worksheets("Feuil2")
     
            'plage de recherche en colonne A
            Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
     
            'recherche la valeur
            Set Cel = Plage.Find("FCH", , xlValues, xlWhole)
     
            'si trouvée, transpose le tableau
            If Not Cel Is Nothing Then
     
                .Range(Cel.Offset(, 1), Cel.Offset(Colonnes.Columns.Count - 1, Colonnes.Rows.Count - 1)) = Application.WorksheetFunction.Transpose(Colonnes)
     
            sinon
            Else
     
                MsgBox "Pas trouvé :o( snif !"
     
            End If
     
        End With
     
    End Sub
    Hervé.

Discussions similaires

  1. [LibreOffice][Tableur] Basic - Copier des colonnes et les coller dans un autre classeur
    Par ancel17 dans le forum OpenOffice & LibreOffice
    Réponses: 5
    Dernier message: 21/03/2014, 11h45
  2. [Lazarus] TBarChart avec colonnes verticales
    Par etranger dans le forum Lazarus
    Réponses: 4
    Dernier message: 25/06/2006, 15h50
  3. [FTP] copier un ensemble de fichier
    Par carter15_2001 dans le forum Langage
    Réponses: 4
    Dernier message: 24/01/2006, 21h53
  4. [D-7][PostGres]Récuperer l'ensemble des colonnes d'une table
    Par Escandil dans le forum Bases de données
    Réponses: 1
    Dernier message: 21/10/2005, 09h17
  5. Copier un ensemble d'enregistrement dans la meme table
    Par SergeF dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/07/2004, 18h22

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