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/coller sur un autre feuille


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Points : 99
    Points
    99
    Par défaut
    bonjour j'ai une procédure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub formule()
     
     
        Range("AF1").Select
        Selection.AutoFilter
        Selection.AutoFilter Field:=32, Criteria1:="1"
        Range("A1").Select
        Range(Selection, Selection.End(xlToRight)).Select
        Range(Selection, Selection.End(xlDown)).Select
        selection.copy
     
    End Sub
    donc cette formule applique un filtre et me copie le contenu.

    j'aimerai bien copier coller sur autre nouvelle feuille qui ecrase la feuille d'origine (celle ou je fais la copie) ou bien remplacer le contenu de la feuille d'origine par ce qui à été copié

    voila merci d'avance

    en faite c'est la seule alternative pour que ca soit pas du tout long à charger mais le problème c'est que je suis incapable d'exporter ce que j'ai copier sur une autre feuille ou de remplacer la totalité de la feuille initiale par le contenu du filtre voila
    merci d'avance

  2. #2
    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 copier des cellules filtrées
    Bonjour à toi, Bonjour le Forum,

    Sans un seul qui n'ajoute rien, je peux te proposer

    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
    Public Sub essai()
    'Effacer la Feuille 2
    Worksheets("Feuil2").Cells.ClearContents
    'Mise à jour de l'écran non activée
    Application.ScreenUpdating = False
    'Action sur la Feuille1
    With Worksheets("Feuil1")
        'Pour afficher toutes les occurences
         If .FilterMode = True Then .ShowAllData
       'définition de la cellule en dernière ligne et dernière colonne
        derlign = .Cells(.Rows.Count, 1).End(xlUp).Row
        dercol = .Cells(1, .Columns.Count).End(xlToLeft).Column
        With .Range(.Range("A1"), .Cells(derlign, dercol))
                'le filtre selon le critère choisi
                .AutoFilter Field:=32, Criteria1:="1"
                'copie des seules cellules affichées, donc après filtre
                .SpecialCells(xlCellTypeVisible).Copy Destination:=Sheets("Feuil2").Range("A1")
        End With
    End With
    'mode copy non activé
    Application.CutCopyMode = False
    End Sub
    Reprends toutes les lignes de cette proposition de code, et reviens si nécessaire pour d'éventuelles précisions.

    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.


  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Points : 99
    Points
    99
    Par défaut
    merci ca fonctionne

    je vais être un peu chiant mais est ce qu'il est possible de faire tout ce processus dans une seule et même feuille??

  4. #4
    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 copie filtre
    Re-bonjour,

    Ce qui est génant dans ce cas, c'est que par définition un filtre te masque les lignes ne correspondant pas à ton critère.

    Il te faut donc changer de méthode en n'utilisant pas le filtre.

    Cette méthode consiste à alimenter une variable Tableau avec les méthodes

    et

    Ce tableau, à 2 dimensions, serait alimenté cellule par cellule, puis collé dans ta feuille par transposition

    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.


  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Points : 99
    Points
    99
    Par défaut
    par exemple j'ai 5 feuilles,

    est ce que c'est possible de dire

    pour les 5 feuilles tu appliques ce filtre
    tu copie le resultat des 5 filtres et tu les colles (deplaces) sur 5 nouvelles feuilles
    tu me supprimes les 5 feuilles initiales et les nouvelles feuilles hérite de l'ancien nom (nom des feuilles supprimé)

  6. #6
    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 filtre
    Hum! Cette méthode est un peu triviale.

    Par contre, tu peux balayer les cellules de ta colonne "filtrée" et supprimer la ligne entière de chaque cellule ne répondant pas au critère.

    Reviens si cette méthode te convient.

    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.


  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Points : 99
    Points
    99
    Par défaut
    salut merci pour la réponse j'ai essayer et apparemment ça fonctionne correctement il n'y a aucun soucis avec le masque on revanche ce que je cherche en se moment c'est plutot de généraliser la formule sur plusieurs feuilles

  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
    Si tu souhaites associer à chaque feuille origine, une feuille destination.

    En en-tête de module pour débuter tes tableaux à l'indice 1 (option)

    Ici Feuil1 est copiée dans Feuil3 et Feuil2 est copiée dans Feuil4

    A adapter

    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
    Public Sub Monessai()
    Dim i As Integer
    Dim Tablfeuil_orig As Variant, Tablfeuil_dest As Variant
    'Mise à jour de l'écran non activée
    Application.ScreenUpdating = False
     
    Tablfeuil_orig = Array("Feuil1", "Feuil3")
    Tablfeuil_dest = Array("Feuil2", "Feuil4")
     
    For i = 1 To 2
            Worksheets(Tablfeuil_dest(i)).Cells.ClearContents
            'Action sur la Feuille1
            With Worksheets(Tablfeuil_orig(i))
                     'Pour afficher toutes les occurences
                      If .FilterMode = True Then .ShowAllData
                    'définition de la cellule en dernière ligne et dernière colonne
                     derlign = .Cells(.Rows.Count, 1).End(xlUp).Row
                     dercol = .Cells(1, .Columns.Count).End(xlToLeft).Column
                     With .Range(.Range("A1"), .Cells(derlign, dercol))
                             'le filtre selon le critère choisi
                             .AutoFilter Field:=2, Criteria1:="1"
                             'copie des seules cellules affichées, donc après filtre
                             .SpecialCells(xlCellTypeVisible).Copy Destination:=Worksheets(Tablfeuil_dest(i)).Range("A1")
                     End With
            End With
    Next i
    'mode copy non activé
    Application.CutCopyMode = False
    End Sub
    Plouf! Plouf!

    Ici Feuil1 est copiée dans Feuil3 et Feuil2 est copiée dans Feuil4
    Il faut lire

    Ici Feuil1 est copiée dans Feuil2 et Feuil3 est copiée dans Feuil4

    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
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Points : 99
    Points
    99
    Par défaut
    merci pour ton code je vais l'essayer

    elle parait certes trivial mais c'est la seule maniere pour gagner enormement de temps
    étant donné que les feuilles contiennent enormement de ligne , la suppression des lignes serait un processus très long (au moins 7 minutes)

    j'ai essayé un tas de code de suppression de ligne et ça reste toujours trop long donc l'idéal serait non pas de supprimer les lignes mais plutot de les exporter et finalement supprimer la page initiale

  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 grandes feuilles
    Pas d'accord, Huitre.

    Travailler sur grandes données et maximiser le temps de traitement implique presque toujours l'utilisation des tableaux (gain de temps de l'ordre de 99% si ce n'est plus).

    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
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Points : 99
    Points
    99
    Par défaut
    Ah d'accord
    donc ca voudrait dire que je pourrais supprimer toutes les lignes en 10 seconde

    mais je vois pas comment je peux faire avec des tableaux??

    en revanche je peux t'envoyer une serie de codes pour le dedoublonnage et l'adapter de maniere à minimiser la durée du traitement

    1er 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
    Sub clean()
     
    Dim derlg  As Long
    Dim sh As Worksheet
    For Each sh In Worksheets(Array("EXP DIF", "AAR35", "AAR", "PCH", "RST"))
    derlg = sh.Range("AE" & Rows.Count).End(xlUp).Row
    sh.Range("AF1").FormulaR1C1 = "=IF(RC[-1]=R[1]C[-1],0,1)"
    sh.Range("AF1").AutoFill Destination:=sh.Range("AF1:AF" & derlg), Type:=xlFillDefault
    sh.Range("AF1:AF" & derlg) = sh.Range("AF1:AF" & derlg).Value
    sh.Range("AE1:AF1").AutoFilter
    sh.Range("$AE$1:$AF$" & derlg).AutoFilter Field:=2, Criteria1:="0"
    sh.Cells.SpecialCells(xlCellTypeVisible).Delete
    Next sh
    End Sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Cleaner()
        Dim sh As Worksheet
        Dim Ligne As Long
        For Each sh In Worksheets(Array("AAR35", "AAR", "RST"))
            Ligne = sh.Range("af" & sh.Rows.Count).End(xlUp).Row
            Do Until Ligne = 1
                If Application.CountIf(sh.Columns("AF:AF"), sh.Range("af" & Ligne).Value) > 1 Then
                    sh.Range("a" & Ligne).EntireRow.Delete
                End If
                Ligne = Ligne - 1
            Loop
        Next
    End Sub

  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 TABLEAU
    Huitre,

    Tu peux adapter ce code lui-même adapté d'un autre code, de Theze.

    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
    Sub ChercherValeur()
     
        Dim Tbl()
        Dim Plage As Range
        Dim Cel As Range
        Dim LaValeur As Integer
        Dim Adr As String
        Dim I As Integer
     
        'date cherchée (à adapter)
        LaValeur = 1
     
        'plage où s'effectue la recherche de date (colonne A)
        Set dercel = Cells(Rows.Count, 32).End(xlUp)
        Set Plage = Range("AG2:AG" & derlign)
     
        'recherche la valeur
        Set Cel = Plage.Find(LaValeur, LookIn:=xlValues)
     
        'si trouvé
        If Not Cel Is Nothing Then
     
            'mémorise l'adresse de la 1ère cellule
            Adr = Cel.Address
     
            'boucle pour récupérer toutes les dates
            'et stocke les valeurs des colonnes A à D
            'dans un tableau
            Do
     
                I = I + 1
     
                ReDim Preserve Tbl(1 To 32, 1 To I)
     
                For j = 1 To 32
     
                        Tbl(j, I) = Cel.Offset(0, 32 - j)
     
                Next j
     
                Set Cel = Plage.FindNext(Cel)
     
            Loop While Adr <> Cel.Address
     
        End If
     
        'colle le résultat dans la feuille "macopie"
        Sheets("macopie").Range(Cells(1, 1), Cells(UBound(Tbl, 2), UBound(Tbl, 1))) _
        = Application.WorksheetFunction.Transpose(Tbl())
     
     
    End Sub
    Ici, la boucle en j récupère toutes les valeurs à gauche de la cellule répondant au critère et se trouvant en colonne 32.

    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
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Points : 99
    Points
    99
    Par défaut
    j'ai un soucis avec la formule je ne sais pas à quoi c'est due

    donc visiblement le debogage me surligne la derniere ligne de ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'plage où s'effectue la recherche de date (colonne A)
        Set dercel = Cells(Rows.Count, 32).End(xlUp)
        Set Plage = Range("AG2:AG" & derlign)
    donc je l'ai adapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'plage où s'effectue la recherche de date (AF)
        Set dercel = Cells(Rows.Count, 32).End(xlUp)
        Set Plage = Range("AF2:AF" & dercel)
    je ne vois vraiment pas à quoi c'est due

  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
    Modifications

    1 -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dercel = Cells(Rows.Count, 32).End(xlUp).Row
    2 - D'autre part, il te faut adapter le nombre 32 et considérer la colonne de ton critère (Ex :Si AF, alors remplacer 32 par 31)

    3 - De plus, remplace 32-j par j-32 dans la boucle, car cellules à gauche.

    4 - Enfin, insère

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("macopie").Activate
    en avant dernière ligne, avant la méthode transpose

    A plus.

    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
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Points : 99
    Points
    99
    Par défaut
    ben visiblement j'ai suivis tes conseils à la lettre et rien n'y fait malheureusement toujours le mm problème

  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 méthode find
    Quel problème ?

    Peux-tu préciser sur quelle ligne de code le bug se situe. Et quel est le message d'erreur.

    A la limite, peux-tu mettre ton fichier en pièce jointe
    - en le simplifiant à une seule feuille
    - en conservant le code
    - en remplaçant les données confidentielles (1 seul caractère suffit)
    - en précisant ton critère (valeur et colonne)

    On va y arriver.

    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
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Points : 99
    Points
    99
    Par défaut
    alors ça bug dans cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("macopie").Activate
    Sheets("macopie").Range(Cells(1, 1), Cells(UBound(tbl, 2), UBound(tbl, 1))) = Application.WorksheetFunction.Transpose(tbl())
    plus exactement la derniere

  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
    Bonjour Huitre, Bonjour le Forum

    J'ai l'impression que ton tableau n''est pas alimenté.

    Mets ta dernière ligne de code - celle qui buggue - en commentaires, et insère au-dessus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Debug.Print UBound(tbl, 1)
    Debug.Print UBound(tbl, 2)
    Et fais part des résultats affichés dans la fenêtre Exécution

    (Pour afficher la fenêtre Exécution : CTRL + G)

    Il doit y avoir homogénéité entre la colonne de recherche et son numéro

    AG ==> 33
    AF ==> 32

    De plus un fichier joint, même simplifié en 1 seule feuille, serait bienvenu.

    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
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Points : 99
    Points
    99
    Par défaut
    alors je pense qu'il est plus judicieux d'envoyer le fichier j'ai inseré un commentaire à la première page visiblement rien n ' y fait

  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 tableau
    Salut,

    Voici le fichier - en pièce jointe - avec ce code qui est effectif sur la feuille la plus complète.

    J'attire ton attention sur le temps de réalisation de la procédure.

    Pour traiter 2243 * 32 = 71808 cellules

    Temps de traitement : 2 secondes

    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
    Sub cherchervaleur()
    Dim tbl()
    Dim plage As Range
    Dim cel As Range
    Dim lavaleur As Integer
    Dim adr As String
    Dim I As Integer
     
     
    t1 = Timer
     
    Application.ScreenUpdating = False
     
    With Sheets("YYY")
     
            lavaleur = 1
            dercel = .Cells(Rows.Count, 32).End(xlUp).Row
            Set plage = .Range("AF2:AF" & dercel)
            Set cel = plage.Find(lavaleur, LookIn:=xlValues)
            If Not cel Is Nothing Then
     
                    adr = cel.Address
                    Do
     
                            I = I + 1
                            ReDim Preserve tbl(1 To 32, 1 To I)
                            For j = 1 To 32
                            tbl(j, I) = cel.Offset(0, j - 32)
                            Next j
                            Set cel = plage.FindNext(cel)
     
                    Loop While adr <> cel.Address
     
            End If
     
    End With
     
    With Sheets("macopie")
            .Activate
             derlign = .Cells(.Rows.Count, 1).End(xlUp).Row
             .Rows("2:" & derlign).ClearContents
            .Range(Cells(1, 1), Cells(UBound(tbl, 2), UBound(tbl, 1))).Offset(1, 0) = Application.WorksheetFunction.Transpose(tbl())
    End With
     
    Debug.Print Timer - t1 & " secondes de traitement"
     
    End Sub
    Ici, j'ai copié la ligne de titres des colonnes de la feuille "macopie" d'où le

    Fichiers attachés Fichiers attachés

    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. Macro copier coller dans une autre feuille
    Par olivverte dans le forum Excel
    Réponses: 23
    Dernier message: 17/12/2013, 14h35
  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. Copier une image sur une feuille et la coller sur une autre feuille
    Par Hierog dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 17/03/2011, 12h21
  4. Réponses: 8
    Dernier message: 12/08/2009, 11h32
  5. Recherche et copier/coller sur une autre feuille
    Par AzelRoth dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/02/2009, 10h21

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