copiage spécial et mise en forme html

caskad

XLDnaute Nouveau
Que de soucis actuellement mais j'y suis presque grâce à ce forum qui je l'espère va m'aiguiller sur ce problème :)

j'ai un petit soucis concernant une mise en forme suite à collage spécial.

Je me demande pourquoi, via un webbrowser contenu dans un userform, je ne peux pas coller une suite de "mot" provenant d'une page HTML en la transformant en texte.

je m'explique:

j'ai par exemple une ligne:

XXXXX XXX XXXXX XXXXXXX

que je vais copier depuis IE et en collant sur une ligne excel j'obtiens une cellule XXXXXXXXXXXXXXXXXXXX, tout est attaché ce qui me semble logique.

Avec un collage spécial en format texte, j'obtiens ce que je désir:

en A1 XXXXX en B1 XXX en c1 XXXXX en d1XXXXXXX

cela m'est très utile pour faire des calculs!

Malheureusement, je voudrait appliquer ceci via mon usf, mais depuis le webbrowser, si je copie cette même ligne, j'obtiens dans tout les cas une cellule XXXXXXXXXXXXXXXXXXXX.

auriez vous une astuce ?

j'ai beau rechercher, je ne sais pas vraiment ce que je recherche!

j'ai utilisé ce code qui est une compilation et mon espoir de coller le presse papier (dans ce cas cela marche quand c'est fait main ^^!)

qu'est ce qui cloche?

Merci!
 
Dernière édition:

caskad

XLDnaute Nouveau
Re : copiage spécial et mise en forme html

Je rajoute mon code qui me copie la ligne HMTL mais qui ne la format pas en texte:


Private Sub CommandButton8_Click()
'nécéssite d'activer la référence Microsoft Form 2.0 Object Library

Dim Resultat As String
Dim dl As Long
With New DataObject

.GetFromClipboard

Resultat = .GetText(1)

End With
With Sheets("Base")
dl = .Range("A65000").End(xlUp).Row + 1 'première ligne vide colonne T
.Cells(dl, 20) = Resultat
End With

End Sub

j'ai essayé un sendkey qui copierai la ligne en colonne 20 1er ligne vide mais je n'y arrive pas

SendKeys "%lpp~" marche parfaitement en macro mais je en sais pas comment via un userform activer cette commande sur me feuille BASE.

quelqu'un pourrait m'aider?

Merci !
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : copiage spécial et mise en forme html

Bonjour


Essaie en adaptant le code ci-dessous

Code:
 Sub test_ok()
'nécéssite d'activer la référence Microsoft Form 2.0 Object Library
Dim Resultat As String, t
Dim dl As Long
    With New DataObject
        .GetFromClipboard
        Resultat = .GetText(1)
    End With
t = Split(Resultat)
[A1].Resize(, UBound(t) + 1) = t
End Sub
PS: pour tester, dans le bloc-notes de Windows j'ai saisi:
aaESPACEbbESPACEccESPACEddESPACEee

J'ai fait CTRL+C puis depuis Excel, j'ai lancé la macro
et j'ai bien en A1 :aa , en B1 bb, en C1 cc, en D1 dd et en E1 ee
 
Dernière édition:

caskad

XLDnaute Nouveau
Re : copiage spécial et mise en forme html

Bonjour Staple1600, j'ai effectivement un bon debut de piste qui dissocie chaque mot par son espace, mais la mise en page HTML et le copiage spécial me donne un resultat un peu mieux ;)

je ne sais pas coment l'expliquer, j'ai par exemple

"marque ferrage" "1234567" "30y reférence" "1" "19" en HTML

et le copiage spécial me donnait

en A1 "marque ferrage"
en B1 "1234567"

ainsi de suite, mais ta solution est déja pas trop mal :)

Merci !
 

caskad

XLDnaute Nouveau
Re : copiage spécial et mise en forme html

Après essai, le code est inadapté malheureusement,

J'obtiens un peu trop de hachage par espace et ne peut toujours pas récupérer les données comme je le souhaiterais.

Je me suis probablement mal expliquer:

j'ai une page HTML qui comporte 6 colonnes. le nombre de ligne par pages est variable et j'utilise la fonction copier une ligne et souhaiterais récupérer la mise en forme texte via excel. Via un collage spécial pas de soucis, chaque mot des colonnes aussi long qu'il soit est bien dans la chaque colonne.

Mais que j'utilise mon usf avec mon webbrowser, la fonction collage spécial ne marche plus, je dois fait ALT+l pp enter et la nickel :)

mais je pensais bêtement utiliser un bouton sur le usf pour incrémenter ce collage. Le problème est que je ne sais pas ou mettre le sendkey, ni même si ce choix est judicieux.

j'ai bien tenté de convertir mais chaque mot de chaque colonne est plus ou moins long ce qui rend l'utilisation impossible de cette commande :confused:


J'espère être plus claire :)

EDIT:
En modifiant le code afficher, un simple copier coller me donner la mise en forme, mais je n'arrive pas a coller les valeurs au bon endroit ^^

Sub coller()
Dim dl As Long

With Worksheets("Base")
dl = .Range("a65000").End(xlUp).Row + 1 'première ligne vide colonne a
.Cells(dl, 20) = ActiveSheet.Paste ' selectionne la ligne vide 20 eme colonne
End With

End Sub

cela me colle bien le bon format mais sur la case active et non la 1er ligne vide en colonne T :s

je pense que c'est activesheet.paste qui fait ça.

Merci en tout cas!
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof