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 :

Comment copier des donnée en passant par un tableau VBA


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
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 28
    Par défaut Comment copier des donnée en passant par un tableau VBA
    Bonjour,
    Je voulais savoir comment je peux copier mes donnée de feuille 1 vers feuille 2 en passant par un tableau. Mon but est tout d'abord de stocker les donnée de feuille 1 dans un tableau et ensuit je vais utiliser ce tableau pour copier ses contenus vers la feuille 2. J'ais créé deux sub () nomé Tableau et Copy. Je n'arrive pas à obtenir les données dans la feuille 2 via ce tableau. Quelqu'un peut me donner un coup de main sur ce problème? Merci d'avance.
    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
     
    'Copier des données d'Excel vers VBA
    Sub Tableau()
    Dim i As Integer
    Dim FL1 As Worksheet
    Set FL1=Sheets("Feuil1")
    With FL1
            Dim tablo(2,5) ' Tableau de 3 x 6 cases
            ReDim tablo(2,5)
            ' Enregistrement des valeurs dans le tableau
            For i=0 To 2
                     tablo(i,0)=.Range("A" & i+4)
                     tablo(i,1)=.Range("B" & i+4)
                     tablo(i,2)=.Range("C" & i+4)
                     tablo(i,3)=.Range("D" & i+4)
                     tablo(i,4)=.Range("E" & i+4)
                     tablo(i,5)=.Range("F" & i+4)
           Next i
    End With
    End Sub
    'Copier des données de VBA vers Excel
     Sub test()
    Dim i As Integer
    Dim FL2 As Worksheet
    Dim tablo()
    '***nétoyer feuille 2******
    Set FL2 =Sheets("Feuil2")
    With FL2 
         .Cells.Clear
    '************Nommer et ajouter les titres de colonnes
         .Cells(1,1) = "Data"       
         .Cells(2,1).Resiwe(1,8)=Array("year", "month", "day", "hour", "dm/dt, "kk", "sum","condition")
          For i=0 To 2
                  .Range("A" & i+3)= tablo(i,0)      
                  .Range("B" & i+3)= tablo(i,1)
                  .Range("C" & i+3)= tablo(i,2)
                  .Range("D" & i+3)= tablo(i,3)
                  .Range("G" & i+3)= tablo(i,4)
                  .Range("H" & i+3)= tablo(i,5)       
         Next i
    End With
    FL2.Activate    
    End Sub
    discussion.xlsx

  2. #2
    Expert éminent 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
    Par défaut
    Petite remarque liminaire : il aurait mieux valu que tu présentes ici un code issu du VBE (étant donné que visiblement celui-ci n'a pas été tapé dans VBE et n'a donc pas pu être exécuté).

    Y a-t-il une raison pour laquelle tu souhaites compliquer cette opération en passant par l'intermédiaire d'un tableau ?
    Parce que ce que tu souhaites faire peut être obtenu en 2 ou 3 lignes (et sans boucles) si on fait la copie en direct.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    With Sheets("Feuil2")
        .UsedRange.ClearContents
        .Range("A1") = "Data"       
        .Range("A2:H8") = Array("year", "month", "day", "hour", "dm/dt", "kk", "sum", "condition")
        Sheets("Feuil1").Range("A4:F6").Copy
        .Range("A3").PasteSpecial(xlPasteValues)
    End With
    C'est quand même plus simple, non ?

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    en passant par un tableau

    exemplececi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For i = 0 To 2
                     tablo(i, 0) = .Range("A" & i + 4)
                     tablo(i, 1) = .Range("B" & i + 4)
                     tablo(i, 2) = .Range("C" & i + 4)
                     tablo(i, 3) = .Range("D" & i + 4)
                     tablo(i, 4) = .Range("E" & i + 4)
                     tablo(i, 5) = .Range("F" & i + 4)
           Next i
    peut etre remplacé par cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tablo = sheets(1)Range("A4:F6").Value
    et pour la destination
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sheets("feuil2").cells(1,1).resize(ubound(tablo),ubound(tablo,2))=tablo
    et on pourrait meme se passer d'un tableau et meme de copy

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set plage=sheets(1).Range("A4:F6")
    sheets("Feuil2").cells(1,1).resize(plage.rows.count,plage.columns.count)=plage.value
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 28
    Par défaut
    merci à vous deux. Je vais tester vos codes.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 28
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Petite remarque liminaire : il aurait mieux valu que tu présentes ici un code issu du VBE (étant donné que visiblement celui-ci n'a pas été tapé dans VBE et n'a donc pas pu être exécuté).

    Y a-t-il une raison pour laquelle tu souhaites compliquer cette opération en passant par l'intermédiaire d'un tableau ?
    Parce que ce que tu souhaites faire peut être obtenu en 2 ou 3 lignes (et sans boucles) si on fait la copie en direct.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    With Sheets("Feuil2")
        .UsedRange.ClearContents
        .Range("A1") = "Data"       
        .Range("A2:H8") = Array("year", "month", "day", "hour", "dm/dt", "kk", "sum", "condition")
        Sheets("Feuil1").Range("A4:F6").Copy
        .Range("A3").PasteSpecial(xlPasteValues)
    End With
    C'est quand même plus simple, non ?
    BOnjour Menhir
    En fait , je voulais savoir comment utiliser un tableau pour stocker des données. Je crois que avec ce tableau je peux diminuer le temps de calcul si j'ai beaucoup de données.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 28
    Par défaut Erreur
    Du coup, mon code ne me permet pas de copier des données dans le tableau. Je ne sais pas où est son problème? C'est à cause du code Sub tableau() ou Sub test() ?

  7. #7
    Expert éminent 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
    Par défaut
    Citation Envoyé par sommongkul Voir le message
    En fait , je voulais savoir comment utiliser un tableau pour stocker des données. Je crois que avec ce tableau je peux diminuer le temps de calcul si j'ai beaucoup de données.
    S'il y a des calculs intermédiaires, tu aurais du le préciser.

    De toutes façons, ta méthode initiale ne fonctionne pas puisque les variables sont détruites à la fin d'une exécution.
    Donc, tu ne peux pas reprendre l'exécution d'une autre macro en espérant récupérer les variables renseignées lors de l'exécution précédente.

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 28
    Par défaut
    Citation Envoyé par Menhir Voir le message
    S'il y a des calculs intermédiaires, tu aurais du le préciser.

    De toutes façons, ta méthode initiale ne fonctionne pas puisque les variables sont détruites à la fin d'une exécution.
    Donc, tu ne peux pas reprendre l'exécution d'une autre macro en espérant récupérer les variables renseignées lors de l'exécution précédente.
    Est ce que vous pouvez m'aider comment je peux resoudre ce problème? Est ce qu'il faut que je crée un tableau dans le macro Sub test() directement ou comment?

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    la solution
    met tes variables en public
    et decharge les apres le moment venu
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #10
    Expert éminent 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
    Par défaut
    Citation Envoyé par sommongkul Voir le message
    Est ce que vous pouvez m'aider comment je peux resoudre ce problème?
    Faire les deux étapes en une seule macro.

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/10/2013, 11h59
  2. VBA- comment extraire des données sur internet via un programme vba ?
    Par cecile_64 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 17/08/2012, 15h37
  3. Réponses: 2
    Dernier message: 17/01/2010, 18h09
  4. Réponses: 2
    Dernier message: 17/03/2009, 11h03
  5. [ADO.Net][VB.NET] Comment copier des données entre deux BDD différentes ?
    Par maddog2032 dans le forum Accès aux données
    Réponses: 6
    Dernier message: 06/06/2005, 11h01

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