Insérer ligne + Contenu du presse-papier

bambi

XLDnaute Occasionnel
Bonsoir à tous

Après avoir obtenu une aide sur des fonctions masquer/afficher des lignes, j'ai essayé d'ajouter une macro à mon tableau mais l'enregistreur ne donne rien et mes connaissances en VBA sont trop succinctes.

Donc je me tourne à nouveau vers vous.
Dans un tableau, je copie/colle des données récupérées sur le web
Le format est toujours le même et le tableau joint a été conçu pour recevoir ces données
Je désirerais insérer à chaque fois le contenu du presse papier en décalant toutes les lignes vers le bas, avec insertion d'une ligne date.

Ma demande est détaillée plus précisement dans le fichier joint.

Merci d'avance ;)
 

Pièces jointes

  • ClasseurV2.zip
    17.9 KB · Affichages: 40
  • ClasseurV2.zip
    17.9 KB · Affichages: 42
  • ClasseurV2.zip
    17.9 KB · Affichages: 48
Solution
Re : Insérer ligne + Contenu du presse-papier

Encore une fois un grand merci de ton aide Pierrot.
En modifiant ta proposition comme ci-dessous, j'ai exactement le résultat souhaité
C'est parfait et bonne soirée

Code:
Range("D4").Resize(UBound(z) + 2).NumberFormat = "[$-409]mmmyy;@"

bambi

XLDnaute Occasionnel
Re : Insérer ligne + Contenu du presse-papier

Re ;)

J'ai travaillé sur mon fichier et presque réussi à bricoler une macro qui ressemble à ce que je souhaite faire.

Évidemment, avec l'enregistreur ce n'est pas forcément très propre mais ça marche globalement sauf le copier/coller souhaité.

J'ai un peu bricolé le tout pour avoir un titre pour chaque nouveau "copier/coller" avec la date du jour.
Et je passe d'abord par un copier puis couper dans une cellule à droite de mon tableau afin d'avoir ensuite la fonction "insérer les lignes coupées"

Problème: Le texte source que je copie depuis une fenêtre web n'est jamais le même. Les colonnes ne changent jamais et j'ai formaté mon tableau en conséquence MAIS le nombre de lignes, lui, n'est jamais le même. Et donc la macro générée par l'enregistreur cale à ce niveau dès que je fais un autre copier/coller de la page web en question.

Voici la partie de la macro qui bugue.
Code:
    ActiveSheet.PasteSpecial Format:="Texte Unicode", Link:=False, _
    DisplayAsIcon:=False, NoHTMLFormatting:=True

C'est un peu difficile à expliquer donc j'espère que mon fichier sera plus clair.

Y'a t-il un moyen de résoudre ce bug quelque soit le nombre de lignes copiées ?
Merci de vos avis ;)

PS: Je ne peux pas joindre un modèle texte de ce que je copie mais j'espère que ce sera compréhensible tout de même
 

Pièces jointes

  • ClasseurV3.zip
    21 KB · Affichages: 48
  • ClasseurV3.zip
    21 KB · Affichages: 51
  • ClasseurV3.zip
    21 KB · Affichages: 53
Dernière édition:

bambi

XLDnaute Occasionnel
Re : Insérer ligne + Contenu du presse-papier

Bonjour à tous

Pour ne pas m'entêter à chercher en vain, dois-je considérer que l'absence de réponse signifie qu'il n'y pas de solution et qu'il vaut mieux que j'abandonne l'idée ? ;)
 

bambi

XLDnaute Occasionnel
Re : Insérer ligne + Contenu du presse-papier

Comme je ne suis pas du tout entêtée et bien que je me parle toute seule depuis le début de ce post :D, je fais une ultime remontée de mon message.
Je joins mon travail tel qu'il est actuellement avec un fichier txt des données que je souhaite coller.
J'ai réussi à faire quelque chose mais vraiment, j'aurais besoin d'une réponse sur la suite à donner.
Toutes les explications sont dans le fichier
Merci d'avance à celui ou celle qui aura la gentillesse de me répondre même si c'est pour me dire de laisser tomber et qu'il n'y a pas de solution à mon problème ;)
Si c'est le cas, je me contenterai de ce que j'ai réussi à faire et qui est au maximum de mon petit niveau.
 

Pièces jointes

  • ClasseurV4 et txt.zip
    22.6 KB · Affichages: 51

Pierrot93

XLDnaute Barbatruc
Re : Insérer ligne + Contenu du presse-papier

Bonjour Bambi,

regarde le code ci-dessous, si il peut t'aider, attention il faut cocher dans l'éditeur vba la référence "Microsoft Forms 2.0 Object Library" :

Code:
Option Explicit
Sub test()
'activer la reference Microsoft Forms 2.0 Object Library
Dim x As New DataObject, z
x.GetFromClipboard
z = Split(x.GetText(1), vbLf)
Rows("3:" & UBound(z) + 4).Insert xlShiftDown
ActiveSheet.Paste Range("A4")
End Sub

bonne soirée
@+
 

bambi

XLDnaute Occasionnel
Re : Insérer ligne + Contenu du presse-papier

Bonjour le forum :)

Je reviens sur ce post car j'ai une petite bizarrerie que je ne parviens pas à résoudre
J'utilise la macro suivante (fournie par Pierrot) pour coller le contenu du presse papier dans un tableau.

Dim x As New DataObject, z 'Insere le contenu du presse-papier
x.GetFromClipboard
z = Split(x.GetText(1), vbLf)
Rows("4:" & UBound(z) + 4).Insert xlShiftDown
ActiveSheet.Paste Range("A5")

Mon probleme:
Dans les données collées en colonne D, j'ai un format du genre FEB10 qui est evidemment reconnu comme une date et transformé en 10-FEVR.
Or je voudrais conserver le format initial.
Comment obliger une collage spécial qui conserve les données tel quel dans la macro ci-dessus ?

J'ai essayé un PasteSpecial mais j'ai un bug.

Merci de votre aide ;)
 

Pierrot93

XLDnaute Barbatruc
Re : Insérer ligne + Contenu du presse-papier

Bonjour Bambi

essaye peut être en rajoutant la ligne en bleu, si j'ai bien compris :

Code:
Dim x As New DataObject, z 'Insere le contenu du presse-papier
x.GetFromClipboard
z = Split(x.GetText(1), vbLf)
Rows("4:" & UBound(z) + 4).Insert xlShiftDown
[COLOR="Blue"][B]Range("A5").NumberFormat = "@"[/B][/COLOR]
ActiveSheet.Paste Range("A5")

bonne soirée
@+
 

bambi

XLDnaute Occasionnel
Re : Insérer ligne + Contenu du presse-papier

Encore une fois un grand merci de ton aide Pierrot.
En modifiant ta proposition comme ci-dessous, j'ai exactement le résultat souhaité
C'est parfait et bonne soirée

Code:
Range("D4").Resize(UBound(z) + 2).NumberFormat = "[$-409]mmmyy;@"
 

Discussions similaires

Statistiques des forums

Discussions
312 203
Messages
2 086 195
Membres
103 153
dernier inscrit
SamirN