Extraire des données

Jucyla

XLDnaute Nouveau
Bonjour le forum,

dans le cadre d'un jeu j'aurais besoin de votre aide :)

J'aurais besoin d'extraire des données selon certaines valeurs présente dans un onglet.
Je vais essayer d'expliquer au mieu, mais ce n'est pas simple simple .

Dans l'onglet nommé "Jucyla_Source" du code html copié en tant que texte.
J'aurais besoin d'en extraire certaines lignes et de les mettre dans l'onglet nommé "Jucyla"

les lignes qui doivent être extraites sont les lignes qui contiennent les textes suivants :

- char-portrait-full-img
- star star
- char-portrait-full-level
- char-portrait-full-gear-level

il faut bien entendu que cela suive l'ordre du l'onglet "Jucyla_Source"
J'ai souligné en vert dans l'onglet "Jucyla_Source" les lignes qu'il faudrait récupéré des 3 premiers personnages
J'ai également souligné en vert les 2 derniers personnages.
L'idée étant de récupérér les lignes demandées pour chaque personnage, et donc de les mettre dans l'onglet nommé "Jucyla"
Dans l'onglet "Jucyla", j'ai mis ce que je voudrais arriver à faire, donc les 3 premiers personnages, ensuite tous les autres, et pour finir j'ai mis également les 2 derniers.

Merci pour toute l'aide apportée, cela me fera gagner des jours entiers :)
 

Pièces jointes

  • extract.xlsx
    128.6 KB · Affichages: 137

Staple1600

XLDnaute Barbatruc
Bonsoir à tous

Un essai avec une macro
VB:
Sub a()
Dim DL&, LD&
Application.ScreenUpdating = False
DL = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To DL
If InStr(Cells(i, 1), "<img class=""char") > 0 Then
LD = Feuil2.Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(i, 1).Resize(11).Copy
Feuil2.Cells(LD, 1).PasteSpecial xlValues
End If
Application.CutCopyMode = False
Next
Feuil2.Range("A:A").Columns.AutoFit
End Sub
NB: Quel est le but recherché au final ?
Si il s'agit de ce que je crois, un bookmarklet idoine placé dans tes favoris ferait le job bien plus rapidement ;)
 

Jucyla

XLDnaute Nouveau
Merci pour ta réponse je vais tester :)

En fait le but final et de récupérer les infos dans l'onglet "Jucyla" et derrière j'ai d'autres formules qui récupère les infos formatées.
Mais après je vais appliquer cela à 50 feuilles pour récupérer la collection de toute ma guilde, afin que l'on prépare mieux nos stratégies de developpement
 

Jucyla

XLDnaute Nouveau
non pas de récupérer les images en gros l'idée c'est d'avoir apres dans un tableau récap que :

jucyla a :
- Qui-Gon Jinn 7* lvl 81 Gear 11
- Jedi Knight Anakin 7* lvl 81 Gear 11

etc....

et apres je ferais pareil pour les 49 autres membres de ma guilde sur ce jeu

et le tout apparaitra dans un tabelau récapitulatif, comme ça en un coup d'oeil on peut voir quel membre à quels joueurs et donc faire des stratégies par rapport à ça

En fait j'avais déjà reussi à récupérer via des formules (je suis nulle pour le vba) le nom de tous les joueurs que possèdent chaque membre avec le lvl et le gear également mais je bloque sur le nombre d'étoiles de chaque joueur. Car autant le lvl et le gear c'est du texte, autant pour le nombre d'étoiles c'est que dans le code source.

C'est les fameuses lignes :

<div class="star star1"></div>
<div class="star star2"></div>
<div class="star star3"></div>
<div class="star star4"></div>
<div class="star star5"></div>
<div class="star star6"></div>
<div class="star star7"></div>

qui indique que le personnage est en 7*

un personnage qui aurait que 4* par exemple, il n'y aurait que ces lignes là :

<div class="star star1"></div>
<div class="star star2"></div>
<div class="star star3"></div>
<div class="star star4"></div>


du coup je dois bidouillé pour arriver à ce que je veux

mais bon si tu as une solution simple qui me donnerait dans la feuille jucyla un truc formaté direct par ta macro du genre :

Cellule A1 :Qui-Gon Jinn
Cellule B1 : 7*
Cellule C1 : 81
Cellule D1 : XI

Puis

Cellule A2 :Jedi Knight Anakin
Cellule B2 : 7*
Cellule C2: 81
Cellule D2 : XI


Je suis preneuse :D
 

Jucyla

XLDnaute Nouveau
sinon merci pour ta macro ça marche mais bizarrement parfois ça marche pas, je ne sais pas si c'est lié aux lignes vides.

exemple ça c'est les lignes qui appraissent dans l'onglet "Jucyla_Source" :

kx9w.jpg


et ça c'est ce que donne ta macro :

ktkq.jpg


On voit donc pour le personnage "Dathcha" que ta macro mets des lignes vides également , que cela s'arrete à la ligne "star star4"
y'a pas les lignes "star star5" "star star6" "star star7" et celles indiquant le lvl 68 et le gear III
 

Staple1600

XLDnaute Barbatruc
Re à tous

Ah oui, j'ai oublié de préciser que j'avais d'abord supprimé les lignes vides
en faisant F5-> Cellules vides -> Supprimer des lignes entières

Donc, ci-dessous macro modifiée en conséquence
VB:
Sub b()
Dim DL&, LD&
Application.ScreenUpdating = False
With Feuil1
    .Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    DL = .Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To DL
    If InStr(1, .Cells(i, 1), "<img class=""char") > 0 Then
    LD = Feuil2.Cells(Rows.Count, 1).End(xlUp).Row + 1
    .Cells(i, 1).Resize(11).Copy
    Feuil2.Cells(LD, 1).PasteSpecial xlValues
    End If
    Application.CutCopyMode = False
    Next
End With
Feuil2.Range("A:A").Columns.AutoFit
End Sub
 
Dernière édition:

Jucyla

XLDnaute Nouveau
oui ça marche en enlevant au préalable les lignes vides :)

du coup vu qu'il va falloir que je le fasse sur plusieurs feuilles si je veux personnaliser avec les noms de feuilles ta macro ça donnerait :

Code:
Sub b()
Dim DL&, LD&
Application.ScreenUpdating = False
With Jucyla_Source
    .Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    DL = .Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To DL
    If InStr(1, .Cells(i, 1), "<img class=""char") > 0 Then
    LD = Jucyla.Cells(Rows.Count, 1).End(xlUp).Row + 1
    .Cells(i, 1).Resize(11).Copy
    Jucyla.Cells(LD, 1).PasteSpecial xlValues
    End If
    Application.CutCopyMode = False
    Next
End With
Jucyla.Range("A:A").Columns.AutoFit
End Sub


Et en abusant un peu tu crois que c'est compliqué une fois qu'on a réussi à extraire les lignes dans la feuille Jucyla, d'arriver via une macro d'avoir à la limite dans une autre feuille un truc formaté comme ça :

Cellule A1 :Qui-Gon Jinn
Cellule B1 : 7*
Cellule C1 : 81
Cellule D1 : XI

Puis

Cellule A2 :Jedi Knight Anakin
Cellule B2 : 7*
Cellule C2: 81
Cellule D2 : XI


et ainsi de suite ?
 

Staple1600

XLDnaute Barbatruc
Re à tous

Jucyla
Et en abusant un peu tu crois que c'est compliqué
Credo in excelsis Macro ;)
Lance d'abord la macro b
puis supprimes la ligne 1 de la feuille Jucyla
Enfin lance la macro cc
VB:
Sub cc()
Dim DL&, LD&, a$, b$, c$,d$
Application.ScreenUpdating = False
With Feuil2
    DL = .Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To DL
    If InStr(1, .Cells(i, 1), "<img class=""char") > 0 Then
    On Error Resume Next
    a = Split(.Cells(i, 1).Text, """")(UBound(Split(.Cells(i, 1).Text, """")) - 1)
    b = "7*"
    c = Split(Split(.Cells(i + 9, 1).Text, ">")(1), "<")(0)
    d = Split(Split(.Cells(i + 10, 1).Text, ">")(1), "<")(0)
    .Cells(i, "B").Resize(, 4) = Array(a, b, c, d)
    End If
    Next
    .Columns("B:E").Columns.AutoFit
    .Columns(1).Delete
    .Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
End Sub
 

Jucyla

XLDnaute Nouveau
ahhhhhhhhhhhhhhhh énorme !!!!!!!!!!!!!

merci beaucoup c'est génial ton truc
ah si je savais programmer

pour te faire rire je vais essasyer de t'expliquer comment en gros je faisais avant

en fait je recopier dans l'onglet "Jucyla_source" la colonne A mais en decalé en gros en B2 il y avait le contnu de A1
et je faisais pareil =sur plein de colonne apres, genre en C3 il ya avait le contenu de A1
etc etc

histoire d'avoir une ligne ou sur la meme ligne il y avait le nom du perso et le texte indiquant le nombre de star
et des formules de dingue avec du gauche du droite, du reperage de caractére, du cnum etc...
genre une feuille pour arriver a avoir ce que je voulais, ma macro prenait 10 min !

Juste pour etre sure de pas faire de betises, tu pourrais me remmettre les macro b et cc
mais en utilisant Jucyla_Source et Jucyla à la place de feuil2

en tout cas c'est super tu vas me faire gagner un de ces temps :)
 

Jucyla

XLDnaute Nouveau
ah y'a quand meme une petite erreur, mais ça doit pas etre grand chose, en fait quand je lance la macro cc, tous les persos sont marqués comme étant 7* ce qui n'est pas le cas

et aussi tous les persos apres Coruscant Underworld Police, je les ai pas mais ils reprennent les memes valeurs que le Coruscant Underworld Police donc 7* , lvl 1 et I

les autres etant 0* faut pas les afficher en fait
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 756
Messages
2 091 735
Membres
105 060
dernier inscrit
DEDJAN Gaston