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 2 colonnes d"un classeur A et coller les données dans une seule colonne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Fonctionnaire
    Inscrit en
    Septembre 2022
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Fonctionnaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2022
    Messages : 12
    Par défaut copier 2 colonnes d"un classeur A et coller les données dans une seule colonne
    Bonsoir la communauté,

    je suis novice en VBA et j'ai réussi grâce à vos différent poste à créer mon code VBA.
    cependant maintenant je suis fasse à une impasse. je souhaiterai copier les donner de ma colonne B et C de mon fichier A (ces données corresponde à la date et l'heure) pour les fusionner dans la colonne F de mon fichier B.
    Je souhaiterai que la forme finale soit JJ/MM/AAAA HH:MM:SS sachant que l'heure de la colonne C dans le fichier A est sous forme HH:MM:SS:SSS

    En vous remerciant par avance bonne soirée ou bonne journée pour certain

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour obtenir la date et l'heure dans une même colonne, il suffit de faire une simple addition des deux colonnes quant au format, il faut utiliser la propriété NumberFormat en lui passant comme valeur "dd/mm/yyyy hh:mm:ss"

    Ce que je ferais en 3 ou 4 instructions (il y a lieu d'ajouter les lignes de déclaration des variables + assignation des valeurs ou objets aux variables
    1. Créer une nouvelle colonne, si elle existe passer cette ligne
    2. Insérer la formule, addition de la date et l'heure, dans la colonne entière
    3. Effectuer l'équivalent d'un Copier/Collage spécial-Valeur (une seule instruction)
    4. Appliquer le format


    A lire éventuellement mes deux billets sur le sujet


    [EDIT]
    Voici un exemple très simple avec deux tables se trouvant dans des feuilles distinctes, nommée respectivement "Source" et "Cible" dans le classeur où se trouve le code VBA;
    On suppose évidemment que les données de la colonne A sont identiques et dans le même ordre dans les deux tables, ce que vous ne précisez pas dans votre demande initiale
    Ce serait plus simple évidemment avec des tables structurées, ce qui n'est pas précisé dans la demande.

    Code de la procédure
    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
    Sub t()
     ' Déclaration et assignation des variables
     Dim shtTarget As Worksheet ' Feuille cible
     Dim rngTarget As Range     ' Plage cible
     Dim ColumnTarget As Range  ' Colonne cible où l'on place la formule
     Set shtTarget = ThisWorkbook.Worksheets("Cible")
     Set rngTarget = shtTarget.Range("A1").CurrentRegion
     With rngTarget
      Set ColumnTarget = .Offset(1, 1).Resize(.Rows.Count - 1, 1)
     End With
     ' L'étape de 3 lignes
     With ColumnTarget                      ' Traitement dans la colonne entière
     .Formula = "=Source!B2+Source!C2"      ' Copie de la formule
     .Value = .Value                        ' Equivalent d'un Copier/Collage Special-Valeur
     .NumberFormat = "dd/mm/yyyy hh:mm:ss"  ' Formatage
     End With
     ' Libère la mémoire
     Set shtTarget = Nothing: Set rngTarget = Nothing: Set ColumnTarget = Nothing
    End Sub
    Illustration des deux tables avant l'exécution de la procédure

    Nom : 220914 dvp Copie une formule.png
Affichages : 73
Taille : 27,2 Ko
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre averti
    Homme Profil pro
    Fonctionnaire
    Inscrit en
    Septembre 2022
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Fonctionnaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2022
    Messages : 12
    Par défaut
    Bonsoir,

    Merci beaucoup pour ta réponse.
    J'ai essayer ton code, mais celui-ci ne fonctionne pas.
    C'est peut être du au fait que j'ai déjà des variables ou alors peut être que j'ai mal modifiez le code pour l'adapter a ce que je recherche.

    Voici une parti de mon code
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    Sub recupdata()
        'Déclaration des Variables
        Dim ListeFichier As Variant
        Dim MonClasseur As Workbook
        Dim sAvant  As String
        Dim sAprès  As String
        Dim rngTarget As Range
        Dim ColumnTarget As Range
     
        'on desactive le presse-papier et le rafraichissement de l'écran
        Application.CutCopyMode = False
        Application.ScreenUpdating = False
     
        'on efface les anciennes donnée
        Sheets("Feuil2").Range("B2:AD5000").Clear
        'on recupère le fichier des données à copier
        ListeFichier = Application.GetOpenFilename(Title:="Sélectionner le fichier RAFALE")
        'Prévoir le cas du bouton annuler
        If ListeFichier <> False Then
            'on affecte le fichier selectionné
            Set MonClasseur = Application.Workbooks.Open(ListeFichier)
     'on copie les données de la feuille du classeur selectionné(latitude)
            MonClasseur.Sheets(1).Range("AC7:AC500").Copy
            'on colle les données dans la feuille active(latitude)
            ThisWorkbook.Sheets("Feuil2").Range("D2").PasteSpecial xlPasteValues
            'on copie les données de la feuille du classeur selectionné(longitude)
            MonClasseur.Sheets(1).Range("AD7:AD500").Copy
            'on colle les données dans la feuille active(longitude)
            ThisWorkbook.Sheets("Feuil2").Range("E2").PasteSpecial xlPasteValues
            ' concatenation des colonne date et heure du Rafale sur le fichier finale
            Set shtTarget = MonClasseur.Sheets(1)
            Set rngTarget = shtTarget.Range("A1").CurrentRegion
                With rngTarget
                Set ColumnTarget = .Offset(1, 1).Resize(.Rows.Count - 1, 1)
            End With
                    ' L'étape de 3 lignes
                 With ColumnTarget ' Traitement dans la colonne entière
                .Formula = "=Source!C7+Source!D7" ' Copie de la formule
                .Value = .Value ' Equivalent d'un Copier/Collage Special-Valeur
                .NumberFormat = "dd/mm/yyyy hh:mm:ss" ' Formatage
            End With
            ' Libère la mémoire
            Set shtTarget = Nothing: Set rngTarget = Nothing: Set ColumnTarget = Nothing
            'on desactive les messages d'alerte de Microsoft
            Application.DisplayAlerts = False
            'on ferme le classeur source
            MonClasseur.Close
            'remplace de ° par ø
            sAvant = "° "
            sAprès = "ø"
            Columns("D:E").Select
            Selection.Replace What:=sAvant, Replacement:=sAprès, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
            End If
     
        'on ré-active le presse papier
        Application.CutCopyMode = True
        Application.ScreenUpdating = True
     
    End Sub
    voici mon classeur 1 ou se trouve ma colonne date et ma colonne heure et le classeur ou je veux que cela soit fusionner dans une seule colonne
    Nom : classeur.JPG
Affichages : 92
Taille : 225,9 Ko

    en vous remerciant par avance

Discussions similaires

  1. [Toutes versions] Copier coller les données d'une colonne en lignes avec une boucle
    Par Gotcha009 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/02/2020, 16h02
  2. Réponses: 8
    Dernier message: 02/04/2012, 13h36
  3. Réponses: 2
    Dernier message: 02/09/2011, 13h59
  4. [XL-MAC 2004] copier/coller les données d'une période vers autre feuille
    Par Wawa07 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/05/2011, 12h10
  5. Copier/coller des données dans une appli GWT
    Par yann1610 dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 01/12/2010, 19h00

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