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 :

excel vba: macro pour copier coller données vers autre feuille


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Juillet 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 5
    Points : 1
    Points
    1
    Par défaut excel vba: macro pour copier coller données vers autre feuille
    Bonjour,

    Il faudrait que je fasse une petite macro excel qui ne doit pas être très compliquée à écrire pour quelqu’un qui sait coder, sauf que je n’ai jamais fait ça. Et voilà 1 jour que je suis dessus et je suis perdu.

    Voilà, j’ai un fichier excel avec des dates ( au format hh:mm:ss.0 ) dispersées sur les colonnes C, D, E.
    Et je voudrai copier/ coller ces dates vers un autre onglet sur une seule colonne.

    Ca donnerai :
    Si C1 est au format hh:mm:ss.0, alors copier coller vers Feuil2 cellule A1 (par exemple),
    Si C1 est diffèrent du format, ou vide, ne pas copier
    Puis si D1 est au format hh:mm:ss.0, alors copier coller vers Feuil2 cellule A2,
    puis E1,
    puis C2,
    puis D2,
    puis E2,
    jusqu’à la dernière ligne, actuellement 300 lignes mais ça peut varier.

    Le but étant de n'avoir qu'une seule colonne de date pour entrer ça dans un logiciel spécifique.
    Voilà.
    Si quelqu'un peut m'aider, je lui serai éternellement reconnaissant.

  2. #2
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour Dadass, bonjour le forum,

    Essaie comme ça :

    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
    Sub Macro1()
    Dim OS As Worksheet
    Dim OD As Worksheet
    Dim DL As Integer
    Dim DEST As Range
    Dim I As Integer
     
    Set OS = Worksheets("Feuil1")
    Set OD = Worksheets("Feuil2")
    DL = OS.Cells(Application.Rows.Count, "C").End(xlUp).Row
    For I = 1 To DL
        If IsDate(OS.Cells(I, "C")) Then
            If OD.Range("A1").Value = "" Then Set DEST = OD.Range("A1") Else Set DEST = OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0)
            OS.Cells(I, "C").Copy DEST
        End If
    Next I
    End Sub

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Juillet 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    ça ne marche pas,
    il ne se passe rien, et je ne sais pas pourquoi.

  4. #4
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Re,

    Je ne sais pas si tu as lu le code mais j'ai utilisé le nom des onglets par défaut. OS étant l'Onglet Sources (Feuil1) et OD, l'Onglet Destination (Feuil2). Vérifie que dans ton classeur ils portent bien ce nom là...

    [Édition]
    En relisant ton premier post je viens de me rendre compte que le code que je t'ai proposé n'était pas correct. Il ne gère qu'une seule colonne. Peux-tu nous indiquer le noms des onglets pour qu'on puisse te donner le code le mieux adapté...

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Juillet 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Les onglets s'appellent Feuil1 et Feuil2.
    Je peux aussi les renommer si besoin, mais je ne penses pas que ce soit le problème.
    Quand je lance la macro il ne se passe rien, pas de message d'erreur.

  6. #6
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Re

    Testé, ça fonctionne :

    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
    Sub Macro1()
    Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
    Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
    Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
    Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
    Dim I As Integer 'déclare la variable I (Incrément)
    Dim J As Byte 'déclare la variable J (incrément)
     
    Set OS = Worksheets("Feuil1") 'définit l'onglet source OS
    Set OD = Worksheets("Feuil2") 'définit l'onglet destination OD
    DL = OS.UsedRange.Rows.Count 'définit la dernière ligne éditée DL de l'onglet OS
    For I = 1 To DL 'boucle 1 : sur toutes les ligne I de 1 à DL
        For J = 1 To 3 'boucle 2 : sur les 3 colonnes A, B et C
            If IsDate(OS.Cells(I, J)) Then 'condition : si la cellule ligne I colonne J de l'onglet OS est une date
                'définit la cellule de destination DEST (A1 si A1 est vide, sinon la première cellule vide de la colonne A de l'onglet destination OD)
                If OD.Range("A1").Value = "" Then Set DEST = OD.Range("A1") Else Set DEST = OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0)
                OS.Cells(I, J).Copy DEST 'copie la cellule ligne I, colonne J de l'ongltt OS dans DEST
            End If 'fin de la condition
        Next J 'prochaine colonne de la boucle 2
    Next I 'prochaine ligne de la boucle 1
    End Sub

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Juillet 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Hello,

    ça fonctionne presque!
    Il y a juste que je recherche des heures (format hh:mm:ss.0 le .0 est important car mes heures sont notées comme ça, je sais pas si c'est gênant).
    Donc j'imagine il faut changer la commande IsDate mais j'ai pas trouvé par quoi.

    Aussi j'ai changé "For J = 1 To 3" par "For J = 4 To 6" puisque je cherche colonnes C à E

    Merci beaucoup pour les commentaires à chaque ligne, comme ça j'arrive à peu près à suivre.

  8. #8
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Re,

    C'est quoi ce format avec .0 a la fin ? Va dans Format de cellule [Ctrl]+[1] et donne-nous le format tel qu'il est écrit dans le champ Type de l'onglet Nombre.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Juillet 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    le format de cellule (tel qu'il est écrit dans le champ Type de l'onglet Nombre) est hh:mm:ss

    le .0 est des dizaines de secondes, mais c'est toujours égal à zero

  10. #10
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Re,

    Désolé mais sans un fichier exemple je ne comprends pas...

  11. #11
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 176
    Points
    4 176
    Par défaut
    Bonsoir,

    Voilà essaie ceci (utilisation des CodeName pour le nom des feuilles) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Demo1()
    Dim MesDates As Range
        With Feuil1
            For Each MesDates In Intersect(.UsedRange, .Columns("C").Cells)
                 If IsDate(MesDates) Then Feuil2.Cells(Rows.Count, 1).End(xlUp)(2) = Format(MesDates, "dd/mm/yy hh:mm:ss")
            Next
        End With
    End Sub
    Pour comprendre le code mettre le curseur sur les mots clé du code puis appuyer sur la touche F1 afin d'afficher l'aide VBA qui donnera les explications - voir aussi les boucles cf. faq

    PS : c'est un exemple sur une colonne mais cela peut se faire sur plusieurs colonnes

Discussions similaires

  1. [Toutes versions] Macro pour copier coller un fichier excel
    Par info009 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/05/2014, 23h48
  2. [XL-2007] Copier Coller Ligne vers autre feuille de même classeur
    Par pasterlouis dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/06/2013, 09h58
  3. [Toutes versions] Macro pour copier des données de différentes feuilles
    Par Pyramide33 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/04/2012, 21h47
  4. [XL-2000] Macro pour copier-coller valeur avec un while
    Par golghot dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/06/2010, 16h52
  5. [XL-2007] macro pour copier coller des selections multiples
    Par bedoch dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 12/06/2009, 12h31

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