Sélection de données, copie et organisation
#1
Débutant XLPages

Inscription: 23/08/2018
De Marseille

Messages: 8

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 23-08-2018 15h03

Bonjour le Forum,

 

Nouveau sur ce site car j'ai appris que les macros permettaient de faire gagner du temps et voici bientôt 10 ans que je fais les mêmes choses à raison d'au moins 1 heure par jour !

Je découvre donc les macros, j'y bosse,  mais suis encore loin de mes objectifs à atteindre.

L'une des macros dont j'aurais besoin urgemment consisterait à sélectionner des données d'une feuille, les copier dans une autre et les ordonner.

 

En pièce jointe, un fichier comportant les données brutes récupérées sur un site web en Feuille 1, le résultat attendu en Feuille 2 et l'explicatif de la démarche pas à pas en Feuille 3.

 

Merci à tous de votre aide.

Pièce jointe:
xlsx Données à récupérer et ordonner.xlsx   [ Taille: 24.05 Ko - Téléchargements: 468 ]
Hors Ligne
Rapport   Haut 

Re: Sélection de données, copie et organisation
#2
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 23-08-2018 17h36

Bonjour KeepCool, le Forum,

 

Il y a une infinité de façons de faire pour ce type d'opération.

 

Voici mon interprétation du traitement VBA :

DANS UN MODULE DE CODE STANDARD

Option Explicit

Sub Traitement()
'--------------------------------------
' myDearFriend! -  www.mdf-xlpages.com
'--------------------------------------
Dim vTab As Variant
Dim FSource As Worksheet, FCible As Worksheet
Dim Plage As Range, rLign As Range, R As Range
Dim vText As String, vDate As String, vReunion As String
Dim L As Long, C As Long, lgnDebutTab As Long, lgnFinTab As Long, Lcible As Long, CCible As Long

    Set FSource = Sheets("Feuil1 Page Web Récupérée")           'à adapter
    Set FCible = Sheets("Feuille 2 Résultat Attendu")           'à adapter
   
    'COLLECTE DONNEES
    With FSource
        'A quelle ligne commence le tableau (de 8 colonnes) ?
        lgnDebutTab = .Cells(1, 8).End(xlDown).Row              '1ère donnée rencontrée en descendant la colonne H
        If lgnDebutTab = 0 Then Exit Sub                        'si aucun tableau trouvé!
       
        'A quelle ligne se termine ce tableau ?
        lgnFinTab = .Cells(1048576, 8).End(xlUp).Row            '1ère donnée rencontrée en remontant la colonne H
        If lgnFinTab = lgnDebutTab Then Exit Sub                'si le tableau est vide!
       
        'On récupère et mémorise les données sources souhaitées dans un tableau variant
        vTab = .Range(.Cells(lgnDebutTab + 1, 1), .Cells(lgnFinTab, 8)).Value
       
        'On récupère et mémorise la Date de la course et le n° de Réunion ?
        For L = 1 To lgnDebutTab - 1
            vText = .Cells(L, 1).Value
            If Len(vText) - Len(Replace(vText, "-", "")) = 2 Then       'Il y a 2 "-" dans l'expression trouvée
                vDate = Mid(vText, InStr(1, vText, "-") + 2, 10)
                vReunion = .Cells(L - 1, 1).Value
                Exit For
            End If
        Next L
    End With
   
    'MAJ RESULTATS
    With FCible
        'On efface les anciens résultats
        .Cells.ClearContents
        'Pour chaque ligne du tableau mémorisé
        For L = 1 To UBound(vTab, 1)
            If Left(vTab(L, 1), 1) = "C" Then
                Lcible = Lcible + 1
                CCible = 2
                'Pour chaque colonne source
                For C = 1 To 8
                    Select Case C
                    Case 1
                        'Date en colonne 1
                        .Cells(Lcible, 1).Value = vDate
                        'Réunion en colonne 2
                        .Cells(Lcible, 2).Value = vReunion & vTab(L, C)
                        CCible = CCible + 1
                    Case 5, 7
                        CCible = CCible + 1
                        .Cells(Lcible, CCible).Value = vTab(L, C)
                    Case 8
                        CCible = CCible + 1
                        .Cells(Lcible, CCible).Value = Val(Mid(vTab(L, C), 21))
                    End Select
                Next C
            End If
        Next L
    End With
   
    MsgBox "Traitement terminé!"

 

En pièce jointe, ton fichier adapté en conséquence.

 

En espérant t'avoir dépanné...

 

Bien cordialement,

Pièce jointe:
xlsm PourKeepCool.xlsm   [ Taille: 33.94 Ko - Téléchargements: 497 ]

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Sélection de données, copie et organisation
#3
Débutant XLPages

Inscription: 23/08/2018
De Marseille

Messages: 8

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 23-08-2018 19h36

Un grand merci à toi MDF,

 

Cela va me faire gagner énormément de temps.

 

Un couac tout de même, sur 6 fichiers testés, tout est nickel sauf un seul fichier pour lequel cela ne fonctionne pas.

Il semble bugger à l'étape 9 sans pour autant m'envoyer un message de débogage, m'informant au contraire que le traitement est terminé.

Après de multiples recherches sur ce fichier, le nom de la ville est un nom composé comportant un "-" au milieu.

Cela vient-il de là ?

Est-il possible de contourner ?

 

En tous les cas, ta macro est très claire dans les explications (en vert) même si je ne maîtrise que quelques éléments.

 

Je t'envoie le fichier en question.

 

Bien Cordialement. 

 

 

 

Pièce jointe:
xlsx Classeur6.xlsx   [ Taille: 15.34 Ko - Téléchargements: 439 ]
Hors Ligne
Rapport   Haut 

Re: Sélection de données, copie et organisation
#4
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 23-08-2018 20h18

Tu as tout compris smiley

 

Le problème vient bien du nom de ville qui pourrait contenir aussi un ou plusieurs tirets (je n'y avais pas pensé)!

 

On va cependant profiter du fait que lorsqu'il est inclus dans un nom composé, le tiret n'est pas précédé, ni suivi d'un espace...

 

Tu peux donc régler facilement le souci en modifiant les 2 lignes suivantes :

If Len(vText) - Len(Replace(vText, "-", "")) = 2 Then
    vDate = Mid(vText, InStr(1, vText, "-") + 2, 10)

Comme suit :

If Len(vText) - Len(Replace(vText, " - ", "")) = 6 Then
    vDate = Mid(vText, InStr(1, vText, " - ") + 3, 10)

(note la présence d'un espace avant et d'un espace après le tiret dans la deuxième version)

 

Ca devrait être bon ce coup ci !

 

Bien cordialement,

Edité par myDearFriend! le 24/08/2018 12:07:14

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Sélection de données, copie et organisation
#5
Débutant XLPages

Inscription: 23/08/2018
De Marseille

Messages: 8

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 24-08-2018 15h14

Re,

 

Ca marche pile poil. Un grand merci à toi.

 

En me baladant sur le forum et notamment dans ton fil avec Jc24 de 2006, je m'aperçois que les macros permettent aussi de copier plusieurs pages web d'un même site à la fois !!!

 

Perso, je copie page par page via excel "Données/à partir du web".

 

S'il était vraiment possible de le faire, c'est des années de temps que je gagne, lol.

 

Le truc serait de pouvoir copier dans un même fichier excel jusqu'à 31 pages par mois.

 

Sans vouloir abuser, si tu peux voir ce qu'il est possible de faire, ce serait génial.

 

En fichier joint l'explicatif sur la structure des pages constatées.

 

Un immense merci d'avance.

 

 

 

 

 

 

 

 

 

Pièce jointe:
xlsx Copie pages web.xlsx   [ Taille: 9.99 Ko - Téléchargements: 422 ]
Hors Ligne
Rapport   Haut 

Re: Sélection de données, copie et organisation
#6
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 24-08-2018 15h28

Bonjour keepCool, le Forum,

 

Navré keepCool, sur réclamations de plusieurs sites de Turf (voir ICI par exemple), nous ne pratiquons plus ce type de développement sur le présent site XLpages.

 

Merci de ta compréhension.

 

Par ailleurs, je crois que la question à l'origine de ce fil de discussion est maintenant résolue. Si tel est le cas, je te remercie de bien vouloir solder ce fil comme indiqué dans ma signature.

 

Bien évidemment, si tu as d'autres questions, tu es invité à créer une autre discussion.smiley

 

Bien cordialement,


Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Sélection de données, copie et organisation
#7
Débutant XLPages

Inscription: 23/08/2018
De Marseille

Messages: 8

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 24-08-2018 17h14

Dommage, je comprends et te remercie à nouveau.

Hors Ligne
Rapport   Haut 

Re: Sélection de données, copie et organisation
#8
Débutant XLPages

Inscription: 10/12/2018
De iyto

Messages: 5

Système d'exploitation:
MAC
Version Excel utilisée:
2010
Posté le : 10-12-2018 01h43

Il y a une infinité de façons de faire pour ce type d'opération.

Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes