Comment créer une macro pour sélectionner des données dans des colonnes et

Merci d'avoir pris le temps de travailler avec moi. Je l'apprécie beaucoup beaucoup ...

Comment créer une macro pour sélectionner des données dans des colonnes et des lignes et supprimer les données restantes.Comment créer une macro pour sélectionner des données dans des colonnes et des lignes et supprimer les données restantes.
Transfère ensuite les données dans un nouvel onglet. Ne garder que les dernières dates avec ses données ...

J'ai un problème avec ce classeur que je télécharge sur une base hebdomadaire.

Ses mises à jour hebdomadaires entraînent le déplacement des noms des en-têtes et des noms des lignes dans différentes cellules à mesure que de nouvelles données sont téléchargées.

Ma tâche est de créer une macro pour sélectionner les mots exacts dans certaines colonnes et le groupe exact de mots dans une certaine ligne. Supprimez ensuite le reste des données.

Prochain.

Ensuite, ne prenez que la dernière date avec ses valeurs et en-têtes de chaque groupe de mots et créez un tableau dans une nouvelle feuille de calcul.

Voici un exemple avec les données extraites et leurs valeurs avec ses en-têtes ...

Market_and_Exchange_NamesReport_Date_as_MM_DD_YYYYNonComm_Positions_Long_AllNonComm_Positions_Short_AllChange_in_NonComm_Long_AllChange_in_NonComm_Short_AllPct_of_OI_NonComm_Long_AllPct_of_OI_NonComm_Short_All
10-YEAR U.S. TREASURY NOTES - CHICAGO BOARD OF TRADE12/29/2020599004573755322155713518.417.6
10-YEAR U.S. TREASURY NOTES - CHICAGO BOARD OF TRADE12/21/2020566789516620-866-236561816.4
SILVER - COMMODITY EXCHANGE INC.12/29/20208886834089-160590552.320
SILVER - COMMODITY EXCHANGE INC.12/21/202090473331849784200752.819.4
GOLD - COMMODITY EXCHANGE INC.12/29/202034181272940-8058126661.413.1
GOLD - COMMODITY EXCHANGE INC.12/21/2020349870716749260264862.412.8
RUSSIAN RUBLE - CHICAGO MERCANTILE EXCHANGE12/29/202077805729-886-110232.123.6
RUSSIAN RUBLE - CHICAGO MERCANTILE EXCHANGE12/21/202086666831551-391134.226.9
CANADIAN DOLLAR - CHICAGO MERCANTILE EXCHANGE12/29/20204217826810-1020-630327.317.4
CANADIAN DOLLAR - CHICAGO MERCANTILE EXCHANGE12/21/202043198331133342-2245927.621.1
SWISS FRANC - CHICAGO MERCANTILE EXCHANGE12/29/2020214969709-1790-23334118.5
SWISS FRANC - CHICAGO MERCANTILE EXCHANGE12/21/202023286120426109415643.722.6
MEXICAN PESO - CHICAGO MERCANTILE EXCHANGE12/29/20205692962187331-266039.943.6
MEXICAN PESO - CHICAGO MERCANTILE EXCHANGE12/21/20205659864847-5737-71539.645.4
BRITISH POUND STERLING - CHICAGO MERCANTILE EXCHANGE12/29/20203573530903-1815-61525.522.1
BRITISH POUND STERLING - CHICAGO MERCANTILE EXCHANGE12/21/2020375503151824224582621.8
JAPANESE YEN - CHICAGO MERCANTILE EXCHANGE12/29/20206357716227-3393-465032.78.3
JAPANESE YEN - CHICAGO MERCANTILE EXCHANGE12/21/202066970208771594-5363410.6
EURO FX - CHICAGO MERCANTILE EXCHANGE12/29/202022284879772405123133.211.9
EURO FX - CHICAGO MERCANTILE EXCHANGE12/21/2020222443785413733166433.711.9
BRAZILIAN REAL - CHICAGO MERCANTILE EXCHANGE12/29/2020114072108470988329.153.8
BRAZILIAN REAL - CHICAGO MERCANTILE EXCHANGE12/21/20201069820201029028.353.5
NEW ZEALAND DOLLAR - CHICAGO MERCANTILE EXCHANGE12/29/20202783915305-87124958.131.9
NEW ZEALAND DOLLAR - CHICAGO MERCANTILE EXCHANGE12/21/20202871015056-2951059.431.2
SOUTH AFRICAN RAND - CHICAGO MERCANTILE EXCHANGE12/29/20209765238820030083.520.4
SOUTH AFRICAN RAND - CHICAGO MERCANTILE EXCHANGE12/21/20209565208810558583.718.3
AUSTRALIAN DOLLAR - CHICAGO MERCANTILE EXCHANGE12/29/20205382760333504259138.943.6
AUSTRALIAN DOLLAR - CHICAGO MERCANTILE EXCHANGE12/21/202053323577427537263139.242.5

Voici la liste des noms pour créer un tableau dans la nouvelle feuille de calcul ...

10-YEAR U.S. TREASURY NOTES - CHICAGO BOARD OF TRADE
SILVER - COMMODITY EXCHANGE INC.
GOLD - COMMODITY EXCHANGE INC.
RUSSIAN RUBLE - CHICAGO MERCANTILE EXCHANGE
CANADIAN DOLLAR - CHICAGO MERCANTILE EXCHANGE
SWISS FRANC - CHICAGO MERCANTILE EXCHANGE
MEXICAN PESO - CHICAGO MERCANTILE EXCHANGE
BRITISH POUND STERLING - CHICAGO MERCANTILE EXCHANGE
JAPANESE YEN - CHICAGO MERCANTILE EXCHANGE
EURO FX - CHICAGO MERCANTILE EXCHANGE
BRAZILIAN REAL - CHICAGO MERCANTILE EXCHANGE
NEW ZEALAND DOLLAR - CHICAGO MERCANTILE EXCHANGE
SOUTH AFRICAN RAND - CHICAGO MERCANTILE EXCHANGE
AUSTRALIAN DOLLAR - CHICAGO MERCANTILE EXCHANGE

veuillez télécharger le classeur ci-dessous...

Si vous le souhaitez, merci pour votre aide.

À votre santé

Ceci est un petit fichier pour le mois de janvier

11annual.zip (353.84 Ko)

J'espère que je ne l'ai pas rendu déroutant

Bonjour,

Les spécialistes en Power Truc vont te sortir ça en & petit tour !

A+

Merci aux excellents spécialistes. J'attends gracieusement ta réponse ...

Un peu de patience mon ami ils ne sont pas nombreux, mais ça ne saurai tarder : Le simple fait de remonter le fil de temps en temps va les attirer comme des mouche sur la viande... Il faut dire que ton titre et ta présentation ne sont pas motivants : Si tu sais modifier le titre de ton topic, change le pour "extraction de données pour mise à jour BD."

Rien de tel qu'un bon titre pour motiver le chaland...

A+

Bonjour,

Voici une proposition avec PowerVBA : La macro test s'exécute grâce à un double-clic sur la feuille XLS ou depuis le code.

Il y a pour l'instant une macro secondaire qui supprime la feuille. Elle pourra être désactivée.

Sub test()

Dim textract(), chaine$

Set reg = CreateObject("vbscript.regexp")
motif = Join(Application.Transpose(Range("Liste")), "|")
tdatas = Sheets(1).UsedRange
ReDim textract(1 To UBound(tdatas), 1 To UBound(tdatas, 2))

Call supprimer

For i = LBound(tdatas) To UBound(tdatas)
    reg.Pattern = motif
    chaine = tdatas(i, 1)
    If reg.test(chaine) Then
        lig = match(chaine, textract, 1)
        If lig > 0 Then
            If tdatas(i, 2) > textract(lig, 2) Then
                For k = LBound(tdatas, 2) To UBound(tdatas, 2)
                    textract(lig, k) = tdatas(i, k)
                Next k
            End If
        Else
            n = n + 1
            For k = LBound(tdatas, 2) To UBound(tdatas, 2)
                textract(n, k) = tdatas(i, k)
            Next k
        End If
    End If
Next i

If n > 0 Then
    Sheets.Add(after:=Sheets(1)).Name = "Extract_" & Format(Date, "YYMMDD")
    With Sheets("Extract_" & Format(Date, "YYMMDD"))
        .Rows(1).Value = Sheets(1).Rows(1).Value
        .Cells(2, 1).Resize(n, UBound(textract, 2)) = textract
        '.ListObjects.Add(Source:=.UsedRange, xllistobjecthasheaders:=xlYes).Name = .Name
    End With
End If

End Sub

Function match(vcherchee, tableau As Variant, colonne As Long) As Long
For i = LBound(tableau) To UBound(tableau)
    If tableau(i, colonne) = vcherchee Then
        match = i
        Exit Function
    End If
Next i
End Function
11annual.zip (476.27 Ko)

Cdlt,

Bonjour galopin 01. Merci pour vos commentaires. Je l'apprécie beaucoup.

3 Go J'adore la proposition avec PowerVBA.

En regardant le classeur que vous avez présenté. Je me rends compte que j'ai commis une erreur dans mon explication, que je ne suis pas sûr que vous vouliez m'aider à corriger. Mais votre travail est sur la bonne voie.

Il y a 2 choses:

# 1 sur l'onglet de la feuille de calcul "Extract_210123" que vous avez créé. ce sont la seule colonne que je recherche:

Market_and_Exchange_NamesReport_Date_as_MM_DD_YYYYNonComm_Positions_Long_AllNonComm_Positions_Short_AllChange_in_NonComm_Long_AllChange_in_NonComm_Short_AllPct_of_OI_NonComm_Long_AllPct_of_OI_NonComm_Short_All
10-YEAR U.S. TREASURY NOTES - CHICAGO BOARD OF TRADE1/19/202163336258678648545-4822018.817.4
SILVER - COMMODITY EXCHANGE INC.1/19/20218400932007-3896-310650.319.2
GOLD - COMMODITY EXCHANGE INC.1/19/202130750760869-5710-612156.811.2
RUSSIAN RUBLE - CHICAGO MERCANTILE EXCHANGE1/19/20216964607922597629.325.6
CANADIAN DOLLAR - CHICAGO MERCANTILE EXCHANGE1/19/20214363333307247199428.321.6
SWISS FRANC - CHICAGO MERCANTILE EXCHANGE1/19/2021177068286-2715-16036.517.1
MEXICAN PESO - CHICAGO MERCANTILE EXCHANGE1/19/20215289060577-4680-244536.341.6
BRITISH POUND STERLING - CHICAGO MERCANTILE EXCHANGE1/19/20214590432199-2031-279431.221.9
JAPANESE YEN - CHICAGO MERCANTILE EXCHANGE1/19/2021641431412928679233.57.4
EURO FX - CHICAGO MERCANTILE EXCHANGE1/19/20212365337306777762003510.8
BRAZILIAN REAL - CHICAGO MERCANTILE EXCHANGE1/19/20211297820123-6140747.874
NEW ZEALAND DOLLAR - CHICAGO MERCANTILE EXCHANGE1/19/20212799712014186659060.526
SOUTH AFRICAN RAND - CHICAGO MERCANTILE EXCHANGE1/19/202175162233-1226-5671.421.2
AUSTRALIAN DOLLAR - CHICAGO MERCANTILE EXCHANGE1/19/20215992755067-5237341.538.2

Le reste des colonnes dans "Extract_210123" l'onglet peut être supprimé.

#2 Vous avez également fait un excellent travail avec les données fournies. Je n'ai plus besoin du troisième onglet "Feuil1".

Ce sont toutes les informations que je voulais.

Comme je place de nouvelles données sur une base hebdomadaire, sur l'onglet "XLS".

Le résultat souhaité que je recherche est d'obtenir la dernière date avec ses valeurs dans l'onglet "Extraire_210123" uniquement.

Merci à tous pour votre contribution.

Je suis ravi d'avoir bien travaillé .

Je regarderai pour les colonnes.

Il faut savoir que l'onglet "Feuil1" contient la liste des infos à extraire qui est utilisée dans le code. Donc si on supprime cet onglet, il n'y aura plus d'exécution possible. Il est cependant possible de le masquer...

Que voulez-vous faire exactement chaque semaine ? Remplacer les infos ? Ajouter les infos ? Ou créer un nouvel onglet ?

Cdlt,

Merci pour vos commentaires et votre réponse rapide.

# 1 Concernant les données dans l'onglet "XLS". Je vais remplacer les données ... Chaque semaine, de nouvelles données sont ajoutées. Début janvier 2021 à fin décembre 2021.

Donc le plan est. Pour télécharger le dernier fichier. Puis copiez et collez dans l'onglet "XLS". Cliquez ensuite sur le bouton macro et ... Comme par magie. Obtenez les dernières données dans l'onglet "Extract_210123".

Concernant "sheet1", je n'ai aucun problème. Vous n'avez pas besoin de le cacher ...

J'espère que les informations vous aideront.

Merci d'avance

Bonjour,

Non, désolé, je ne comprends toujours pas...

Je me doute que les données de XLS évolueront. Ce n'est pas un problème puisque la macro récupère la dernière opération (date la plus récente) des lignes qui nous intéressent. Mais, dans l'onglet Extract (_210123, c'était pour la date du jour), on peut effacer les données existantes et les remplacer (donc en fait laisser le code tel quel) ou ajouter les nouvelles données exportées à la suite. C'est ça la question !

La feuille "Feuil1" est fondamentale. Dessus, il y a la liste des opérations à extraire. Sans cette liste, le code ne pourra pas deviner ce qu'il doit prendre. C'est pour ça qu'il faut la garder.

Cdlt,

Voici le code mis à jour avec ce qu'il faut changer, à savoir juste le filtre sur les colonnes, et un peu de mise en forme :

Sub test()

Dim textract(), tfiltre(), chaine$

Set reg = CreateObject("vbscript.regexp")
motif = Join(Application.Transpose(Range("Liste")), "|")
tdatas = Sheets(1).UsedRange
ReDim textract(1 To UBound(tdatas), 1 To UBound(tdatas, 2))
reg.Pattern = motif

Call SupprimerExtract ' SUPPRESSION DE LA FEUILLE EXTRACT

'RECUPERATION DES LIGNES (LES + RECENTES) DE LA LISTE "Liste"
For i = LBound(tdatas) To UBound(tdatas)
    chaine = tdatas(i, 1)
    If reg.test(chaine) Or i = 1 Then
        lig = match(chaine, textract, 1)
        If lig > 0 Then
            If tdatas(i, 2) > textract(lig, 2) Then
                For k = LBound(tdatas, 2) To UBound(tdatas, 2)
                    textract(lig, k) = tdatas(i, k)
                Next k
            End If
        Else
            n = n + 1
            For k = LBound(tdatas, 2) To UBound(tdatas, 2)
                textract(n, k) = tdatas(i, k)
            Next k
        End If
    End If
Next i

'SORTIE SI PAS DONNEES
If n < 2 Then
    MsgBox "Désolé... Nous n'avons pas trouvé les données recherchées", vbCritical, "Aucune correspondance"
    Exit Sub
End If

'FILTRE LES COLONNES CIBLEES
ReDim tfiltre(1 To n, 1 To UBound(textract, 2))
motif = Join(Application.Transpose(Range("Titres")), "|")
reg.Pattern = motif

For k = LBound(textract, 2) To UBound(textract, 2)
    chaine = tdatas(1, k)
    If reg.test(chaine) Then
        kk = kk + 1
        For i = 1 To n
            tfiltre(i, kk) = textract(i, k)
        Next i
    End If
Next k

'AJOUT FEUILLE, TABLEAU ET MISE EN FORME
Sheets.Add(after:=Sheets(1)).Name = "Extract"
With Sheets("Extract")
    .Cells(1, 1).Resize(n, kk) = tfiltre
    .ListObjects.Add(Source:=.UsedRange, xllistobjecthasheaders:=xlYes).Name = "Extract" '<<option
    With .Range("Extract")
        .Columns.ColumnWidth = 16
        .Columns(1).ColumnWidth = 60
        With .Rows(0)
            .WrapText = True
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
        End With
    End With
End With

End Sub
4annual.zip (471.81 Ko)

Cdlt,

Citation "Je soupçonne que les données XLS vont changer. Ce n'est pas un problème puisque la macro récupère la dernière opération (date la plus récente) à partir des lignes qui nous intéressent. Mais, dans l'onglet Extraire (_210123, c'était pour la date actuelle ), nous pouvons effacer les données existantes et les remplacer (donc en fait laisser le code tel quel) ou ajouter les nouvelles données exportées par la suite ».

C'est la bonne solution.

Le fichier fonctionne parfaitement.

J'aime cela. Merci, merci et merci beaucoup ...

J'apprécie vraiment votre temps et vos efforts donnés ...

https://giphy.com/gifs/clapping-clap-standing-ovation-qIXVd1RoKGqlO/fullscreen

Merci pour ce tonnerre d'applaudissements !

Bonne continuation pour la suite,

Cdlt,
Rechercher des sujets similaires à "comment creer macro selectionner donnees colonnes"