Sélection de données, copie et organisation | ||
---|---|---|
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. |
|
![]() |
![]() ![]() |
Re: Sélection de données, copie et organisation | ||
---|---|---|
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, Didier_mDF
![]() Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
![]() |
![]() ![]() |
Re: Sélection de données, copie et organisation | ||
---|---|---|
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.
|
|
![]() |
![]() ![]() |
Re: Sélection de données, copie et organisation | ||
---|---|---|
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
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
![]() Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
![]() |
![]() ![]() |
Re: Sélection de données, copie et organisation | ||
---|---|---|
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.
|
|
![]() |
![]() ![]() |
Re: Sélection de données, copie et organisation | ||
---|---|---|
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.
Bien cordialement, Didier_mDF
![]() Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
![]() |
![]() ![]() |
Re: Sélection de données, copie et organisation | ||
---|---|---|
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. |
|
![]() |
![]() ![]() |
Re: Sélection de données, copie et organisation | ||
---|---|---|
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. |
|
![]() |
![]() ![]() |