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 les données d'une colonne dans une autre feuille en VBA


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2020
    Messages : 53
    Points : 27
    Points
    27
    Par défaut Copier les données d'une colonne dans une autre feuille en VBA
    Bonjour à tous je rencontre un problème sur mon projet.
    J'ai une feuille avec toutes les données de mes commandes, un peu comme une base de donnée. Nom : EX3.PNG
Affichages : 2760
Taille : 45,1 Ko
    J'ai crée une seconde feuille avec seulement les colonnes qui m’intéresse de la première feuille. Nom : EX1.PNG
Affichages : 2518
Taille : 7,2 Ko

    Je voudrais copier les données des colonnes en questions. Pour le moment j'ai fait ç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
    Sub CopieDonnées()
    'Numéro od
        Feuil2.Range("L2:L94").Copy
        Feuil10.Range("A2").PasteSpecial xlPasteValues
     
    'Date Int
    'Dday
    'Raison Social
    'Date od
    'Date Cadence
    'Cout TT
    'Qte
     
    End Sub
    Et le problème, c'est que je voudrais que ce soit dynamique en fonction du nombre de ligne. Par exemple si j'ai 40 lignes aujourd'hui, je copie les 40. Mais si le lendemain j'en est 60 bah je veux prendre les 60 lignes, pas seulement 40.
    Je ne trouve pas comment faire, car sur les tutos que j'ai vu c'est toujours une plage avec plusieurs colonnes.
    Pouvez vous m'aider ? Merci d'avance

  2. #2
    Membre émérite
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 409
    Points : 2 870
    Points
    2 870
    Par défaut
    Bonjour

    Il n'est rien dit dans l'énoncé sur pourquoi il faut prendre 40 ou 60 lignes. Est-ce un filtre, est-ce une mise à jour de données, un désir changeant, ... ?

    Ne connaissant pas la réponse, je vous propose une solution, hyper basique, où le code vous demande jusqu'à quelle ligne copier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub CopieDonnées()
        lig = InputBox("combien ?")
        Feuil2.Range("L2:L" & lig & ",K2:K" & lig & ",I2:I" & lig).Copy
        Feuil10.Range("A2").PasteSpecial xlPasteValues
    End Sub
    Tant qu'à faire, on copie tous les éléments en une seule fois, pour tout coller en une seule fois.

    Sinon, il me semble beaucoup plus efficace de mettre en place un filtre avancé. C'est une fonctionnalité native d'Excel (présente depuis au moins le siècle dernier) et qui répond pile à votre besoin. La première fois n'est peut-être pas simple à mettre en place, mais pour la deuxième, il suffit de lancer le filtre et de cliquer sur OK.
    Je vous laisse consulter le tutoriel de Philippe Tulliez.

    Bonne fin de journée

    Pierre Dumas
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2020
    Messages : 53
    Points : 27
    Points
    27
    Par défaut
    C'est vrai que ce n'est pas clair. En faite chaque jour la base de donnée change en fonction du nombre de commandes, donc nombre de ligne. Par exemple la bdd actuelle comprends 94 lignes mais demain il peu en avoir 100 et apres 90 etc..

    Et je veux copier toutes ces ligne dans ma seconde feuille.

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Feuil2.Range("L1").EntireColumn.Copy
        Feuil10.Range("A1").PasteSpecial xlPasteValues
    Même chose pour les autres colonnes.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2020
    Messages : 53
    Points : 27
    Points
    27
    Par défaut
    Merci pour cette réponse mais ça n'est pas exactement ce que je cherche. Cela modifie le titre de colonne dans la feuille de destination.
    De plus cette fonction prends toute la colonne hors sous cette base de donnée il y'a des commentaires que je ne veux pas copier.

    Il n'est pas possible de compter le nombre de ligne rempli pour arriver jusqu’à la dernier ligne avant la séparation avec les commentaire, pour avoir le nombre d'enregistrement exact à chaque fois ?

  6. #6
    Membre émérite
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 409
    Points : 2 870
    Points
    2 870
    Par défaut
    Citation Envoyé par Icamstudent Voir le message
    [...]
    De plus cette fonction prends toute la colonne hors sous cette base de donnée il y'a des commentaires que je ne veux pas copier.
    Ça, on ne pouvait pas le deviner. Ce n'était écrit ou affiché nul part
    Il n'est pas possible de compter le nombre de ligne rempli pour arriver jusqu’à la dernier ligne avant la séparation avec les commentaire, pour avoir le nombre d'enregistrement exact à chaque fois ?
    Bien sûr que si c'est possible
    Mais, là aussi, il faut en dire plus afin que l'on n'élabore pas des solutions en partant dans des directions qui ne sont pas les bonnes.
    "compter le nombre de ligne rempli" : oui, mais dans quelle colonne ? Et c'est rempli avec quoi ?
    "avant la séparation avec les commentaire" : oui, mais comment sait-on que c'est la séparation ?

    Il faut le maximum d'information afin de proposer l'aide la plus pertinente possible et la plus rapide.

    Bonne fin de journée

    Pierre Dumas
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2020
    Messages : 53
    Points : 27
    Points
    27
    Par défaut
    Pour le commentaire c'est ma faute je m'en suis rendu compte après avoir poste le premier message.

    Chaque colonne à le même nombre de ligne. Et les colonne qui m'intéresse (Numéro od / Date Int / Raison Social / Dday / Date od / Date cadence /Cout TT / Qté). 1 ligne un enregistrement. C'est rempli avec des dates, des codes, des donnée numérique. Tout les colonne ne sont pas toute cote à cote, et elles ne sont pas dans le même ordre dans la feuille de destination.

    Dans le code que j'ai fait, j'arrive bien à copier tout les information. Mais le nombre de ligne est fixé ( Range(A2:A95) ), il n'est pas dynamique ou variable comme vous préféré, pour prendre en compte le nombre de ligne d'enregistrement exacte.

    La séparation avec les commentaire se fait avec une ligne vide entre les 2.

    Et merci de prendre du temps pour m'aider

  8. #8
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour à vous, Bonjour au Forum,

    Pour ma part, je ne trouve pas opportun de placer des commentaires après une base de données.

    Je me méfie comme de la peste de la propriété CurrentRegion.

    Si, malgré tout, les commentaires doivent subsister, et s'ils forment un bloc sans ligne vide, alors peut être éventuellement l'utilisation de 3 xlUp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Explicit
     
    Sub tablo()
     
    Dim derlign As Long
     
    With Worksheets(1)
            derlign = .Cells(.Rows.Count, 1).End(xlUp).End(xlUp).End(xlUp).Row
    End With
     
    End Sub
    Malgré tout, je ne suis pas fan.

    Mais si l'une des dernières cellules de la base reporte une constante (exemple "tra"), alors la recherche de cette dernière ligne pourrait s'effectuer par la combinaison des paramètres SerachOrder et SeachDirection de la méthode Find
    Autrement dit, on part de la dernière ligne de la feuille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Explicit
     
    Sub tablo2()
     
    Dim derlign As Long
     
    With Worksheets(1)
            derlign = .Range("A1:A" & .Rows.Count).Find(what:="tra", searchdirection:=xlPrevious, searchorder:=xlByRows, LookIn:=xlValues).Row
    End With
     
    End Sub
    Pour ce qui concerne la gestion des colonnes, j'opterais pour l'utilisation d'une variable tableau.
    Ceci avec cette précaution nécessaire quant aux dates.
    Celles-ci doivent impérativement être reportées sous format de chaînes de caractères en utilisant la fonction Format.
    Dans le cas contraire, le reversement de la variable tableau pour ce champ risquerait fort de s''effectuer sous format américain (inversion jour et mois).

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2020
    Messages : 53
    Points : 27
    Points
    27
    Par défaut
    C'est très intéressant merci
    Je n'arrive pas à l'ajouter correctement à 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
    Option Explicit
     
    Sub CopieDonnées()
     
    Dim derlign As Long
     
    With Worksheets(2)
            derlign = .Cells(.Rows.Count, 1).End(xlUp).End(xlUp).End(xlUp).Row
    End With
     
     
     
    'Numéro od
        Feuil2.Range("L2 & derlign").Copy
        Feuil10.Range("A2").PasteSpecial xlPasteValues
    'Date Int
        'Feuil2.Range("J2:J95").Copy
        'Feuil10.Range("B2").PasteSpecial xlPasteValuesAndNumberFormats
    'Dday
       ' Feuil2.Range("K2:K95").Copy
       ' Feuil10.Range("C2").PasteSpecial xlPasteValuesAndNumberFormats
    'Raison Social
        'Feuil2.Range("I2:I95").Copy
        'Feuil10.Range("D2").PasteSpecial xlPasteValues
    'Date od
        'Feuil2.Range("M2:M95").Copy
        'Feuil10.Range("E2").PasteSpecial xlPasteValuesAndNumberFormats
    'Date Cadence
        'Feuil2.Range("AC2:AC95").Copy
        'Feuil10.Range("F2").PasteSpecial xlPasteValuesAndNumberFormats
    'Cout TT
        'Feuil2.Range("AH2:AH95").Copy
        'Feuil10.Range("G2").PasteSpecial xlPasteValuesAndNumberFormats
    'Qte
        'Feuil2.Range("AI2:AI95").Copy
        'Feuil10.Range("H2").PasteSpecial xlPasteValuesAndNumberFormats
     
        Application.CutCopyMode = False
     
    End Sub

  10. #10
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut,

    Je n'arrive pas à l'ajouter correctement à mon code
    C'est à dire? Message d'erreur à quelle ligne?

    Par ailleurs, si je me réfère à ce que tu as reporté en libellé, et si tu tiens au collage spécial, mieux vaut à mon avis boucler sur un Array contenant les numéros de colonne

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2020
    Messages : 53
    Points : 27
    Points
    27
    Par défaut
    Erreur 1004

    Un array c'est à dire ?

  12. #12
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Pourrais-tu être plus explicite, s'il te plaît.
    Je t'ai demandé sur quelle ligne portait l'erreur.
    Autrement dit, quelle ligne est mise en surbrillance (généralement jaune) par le débugger lorsque celle-ci survient?

    Un Array est un tableau à 1 dimension, déclaré généralement, et exceptionnellement de mon point de vue, en Variant.
    Tu trouveras plusieurs illustrations avec un minimum de recherche.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2020
    Messages : 53
    Points : 27
    Points
    27
    Par défaut
    Quand je lance le VBA j'ai juste un message d'erreur 1004 mais aucune ligne ne se met en surbrillance.

    d'accord je vais essayer avec cette fonction.
    Je suis novice donc ce qui pour vous est simple, ne l'est pas pour moi. Et j'ai du mal à tout comprendre et assimiler

  14. #14
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Quand je lance le VBA j'ai juste un message d'erreur 1004 mais aucune ligne ne se met en surbrillance.
    Jamais vu

    Lorsque le message d'erreur survient, active le bouton "Débogage" sur le pop-up.

    Tu peux reporter une capture d'écran de ce qui apparaît ensuite.

    Je suis novice donc ce qui pour vous est simple, ne l'est pas pour moi. Et j'ai du mal à tout comprendre et assimiler
    Aucun problème. Nous sommes, pour beaucoup, passés par ce stade.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2020
    Messages : 53
    Points : 27
    Points
    27
    Par défaut
    Voila j'ai surement du faire une erreur bête dans l'ajout de derlign

    Nom : er.PNG
Affichages : 2481
Taille : 40,9 Ko

  16. #16
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bizarre, je ne m'attendais pas à voir une erreur 1004 sans débogage.


    Par ailleurs, et par précaution, procède au préalable à l'affichage de la fenêtre des variables locales.
    Menu "Affichage" de l'éditeur VBE.
    Cette fenêtre t'indiquera la valeur de la variable "derlign"

    Puis effectue une exécution d ton code pas à pas.
    Pour ce faire
    Clic sur le nom de la procédure puis touche F8.
    Le message d'erreur doit survenir après une ligne de ton code.

    Enfin, le code proposé est sans doute à adapter (nom de la feuille, numéro de colonne…).

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2020
    Messages : 53
    Points : 27
    Points
    27
    Par défaut
    J'ai afficher la valeur de derlign c'est égale à 0. Une fois passe le End elle prends la valeur 1

    Et le message erreur arrive la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'Numéro od
        Feuil2.Range("L2 & derlign").Copy
        Feuil10.Range("A2").PasteSpecial xlPasteValues
    J'ai adapter le numéro de dans le Workbook(2) c'est le numéro de la feuille de la base de donnée.
    Mais le numéro de colonne je sais pas ou le mettre.

    Je commence à désespéré un peu lol

  18. #18
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut,

    Il te faut comprendre ce que tu écris.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range("L2 & derlign").
    ne veut rien dire.

    Cette écriture sous-entendrait en effet qu'un nom de cellule(s) "L2 & derlign" soit créé.

    L'argument d'un objet Range peut être une chaîne de caractères, elle-même résultat d'une concaténation.
    Mais dans ce cas, il te faut coder

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("L2:L" & derlign)
    Cela étant, comme un certain nombre de post ont été édités pour cette discussion, retourne un fichier simplifié.
    Je te proposerai volontiers une piste, à condition que tu cherches à comprendre chaque ligne du code proposé (i.e. sans un pur copier/coller, à terme infructueux)

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2020
    Messages : 53
    Points : 27
    Points
    27
    Par défaut
    Voici le fichier simplifier: Copie donnée.xls
    J'ai enlever tout les formule de la bdd pour de garder que les valeur.

    Concernant les commentaires je vais voir avec notre client si ils sont indispensable.

    Pour rappel, j'aimerais copier tout les enregistrements compris dans les colonnes, en fonction du nombre de commande de chaque jour.

    Et oui je vais chercher à comprendre la proposition que tu vas faire, car je veux apprendre. Et comme c'est sur un problème concret pour moi ce sera formateur.
    Encore merci

  20. #20
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut,

    Voici, Voilou.

    Pour la recherche de la dernière ligne, je me suis basé sur les 2 occurrences "O" et "N" reportées en colonne AK

    Comme références, au niveau des colonnes, j'ai considéré les commentaires figurant dans ton code

    A savoir:
    La colonne 12 (L) est copiée vers la colonne 1 (A)
    La colonne 10 (J) est copiée vers la colonne 2 (B)
    etc...

    D'où, en respectant cet ordre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tablo_col = Array(12, 10, 11, 9, 13, 29, 34, 35)
    Soit

    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
    Option Explicit
     
    Public Sub copie_colonnes_MarcelG()
     
    Dim wks_origine As Worksheet
    Dim wks_destin As Worksheet
     
    With ThisWorkbook
            Set wks_origine = .Worksheets("OD_PRIORITY")
            Set wks_destin = .Worksheets("Donnees_access")
    End With
     
    Dim dernl1 As Long, dernl2 As Long, dernl As Long
     
    Dim tablo_col As Variant
    Dim i As Integer
    Dim col As Variant
     
    tablo_col = Array(12, 10, 11, 9, 13, 29, 34, 35)
     
    i = 0
     
    With wks_origine
     
            dernl1 = .Range("AK2:AK" & .Rows.Count).Find(what:="N", searchdirection:=xlPrevious, searchorder:=xlByRows, LookIn:=xlValues).Row
            dernl2 = .Range("AK2:AK" & .Rows.Count).Find(what:="O", searchdirection:=xlPrevious, searchorder:=xlByRows, LookIn:=xlValues).Row
            dernl = Application.WorksheetFunction.Max(dernl1, dernl2)
     
            For Each col In tablo_col
                    i = i + 1
                    .Range(.Cells(2, col), .Cells(dernl, col)).Copy
                    wks_destin.Cells(2, i).PasteSpecial Paste:=xlValues
            Next col
     
    End With
     
    Application.CutCopyMode = False
     
    Set wks_destin = Nothing
    Set wks_origine = Nothing
     
    End Sub
    A adapter (éventuellement) dans un module standard.

    Comme tu sembles être débutante, j'ai opté pour ce processus.
    Bien entendu, je pourrai revenir en considérant une variable tableau.
    (Je ne suis pas familiarisé avec Power Query; sans doute y a-t-il une possibilité de ce côté.)

    Tu essaies de comprendre ce code mot à mot (depuis Option Explicit jusqu'à End Sub).
    Tu reviens pour toute question.

    2 compléments
    1 - La méthode Find est décrite dans cet espace
    2 - Pour ton information, voire, si je peux me permettre, ta formation, tu peux t'orienter vers la source indiquée au-dessus de mon avatar (icône bleue).

    A plus tard donc

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Copier les données de plusieurs cellules dans un autre classeur
    Par GUILBERT50 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 12/08/2016, 10h36
  2. trier et copier des données sur une autre feuille excel
    Par mirage37 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/07/2012, 17h08
  3. Copier les données d'un objet dans un autre
    Par franckcl dans le forum Langage
    Réponses: 6
    Dernier message: 19/06/2012, 12h19
  4. [Toutes versions] Remplir une ListBox avec les données d'une autre feuille
    Par Valoche37 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/01/2012, 16h25
  5. Copier les données de plusieurs colonnes dans une nouvelle feuille
    Par lolonico1974 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/07/2010, 07h51

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