Problème avec le presse-papier (ActiveSheet.Paste)

yremy

XLDnaute Junior
Bonjour à tous !

Je suis très débutant, et la plupart des Macros que je fais sont basées sur des enregistrement que j'étudie par la suite, et de petites bidouilles que je trouve ici, notamment - d'ailleurs, Merci !

je travaille sur un système (SIHOT, un logiciel hôtelier) qui produit des rapports épouvantablement mauvais, exportés en .rtf (je ne vous parle pas des exports en .xls, ingérables).

J'ai réalisé qu'en "collant" tout bêtement un rapport en .rtf, j'avais la possibilité de l'adapter correctement à Excel, (en supprimant ça et là des cellules vides qui correspondent certainement à des sauts de lignes, etc...)

Je me suis donc confectionné cette macro, dont le bouton de commande se situe sur la feuille "Action" :

Code:
Sub CollerNouveauTableau()

' CollerNouveauTableau Macro
' Macro du 23/10/2008 par Yves Rémy
'debuter la macro par:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'et ne pas oublier de terminer par
'Application.ScreenUpdating = True

On Error Resume Next      ' si err 1004 PasteMethodofWorksheetClassFailed

ActiveSheet.Paste ' ça c'est la raison du "coller" sur la feuille "Action", je présume

If Err Then MsgBox " Vous n'avez rien à importer : Retournez dans Word et Copiez l'ensemble du Tableau GästeListe " & vbCrLf _
& " ou de votre liste d'Arrivées !": Exit Sub



    Sheets("SIHOT").Visible = True

    Sheets("SIHOT").Select

    Range("B1:X800").Select
    Selection.Clear
    Range("B1").Select

    ActiveSheet.Paste 

'trouver une façon de ne pas coller (Undo ?) si uniquement une cellule d'occupée ou colonne J vide...
    
If Range("J2").Value = "" Then
If Range("J3").Value = "" Then
If Range("J4").Value = "" Then
If Range("J7").Value = "" Then
If Range("J9").Value = "" Then


Sheets("Action").Select

MsgBox "Importez tout d'abord Votre Liste des Clients Présents ou votre liste d'Arrivée !", vbOKOnly, "Liste Vide ! "
Exit Sub
End If
End If
End If
End If
End If

    
    Sheets("SIHOT").Select
    Range("B1:X800").Select
    With Selection
        .Orientation = 0
        .AddIndent = False
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Columns("B:B").Select
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.EntireRow.Delete
    Range("B1:X800").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone

'on rajoute la colonne des segmentations

    Range("A1").Select
    ActiveCell.FormulaR1C1 = "=+RC[9]"
    Range("A1").Select
    Selection.AutoFill Destination:=Range("A1:A700")
    Range("B1").Select
    
'on affiche le statut de la liste dans le classeur et on referme la feuille


Sheets("Action").Select
        'Range("G19").Select
        'Selection.Font.ColorIndex = 10

Range("A5000").Select

ActiveWindow.ScrollRow = 1
    
    
Sheets("SIHOT").Visible = False
    
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
MsgBox " Importation Réussie"
    
End Sub

Bon, ça fonctionne correctement, pas trop lentement.

J'ai aussi, à l'ouverture de mon classeur :
Code:
Private Sub WorkBook_Open()

Sheets("Action").Select
'Range("G19").Select
'Range("G19").Activate
'Selection.Font.ColorIndex = 35
    
    Range("A200").Select

    ActiveWindow.ScrollRow = 1
    Sheets("Partenaires").Visible = False
        Sheets("Gast").Visible = False

etc...

Et j'ai remarqué hier un truc dont je n'arrive pas à me défaire :
Lorsque j'ai encore quelque chose dans mon clipboard, par exemple, un mot seul, et que je lance cette Macro : Sub CollerNouveauTableau(), et bien, j'ai bien évidemment les messages d'erreur qui s'affichent, mais non seulement ce mot se colle en B1 sur la feuille "SIHOT", mais aussi sur la cellule qui serait active sur la feuille "Action" (la "A200" en l'occurence, si je ne pointe pas ailleurs).

Alors c'est pas grave, mais ça m'énerve, j'arrive pas à trouver de solution.
Et pardon pour l'architecture du Code, encore une fois parfaitement amateur.

...Ce qui m'amène à poser une seconde question : comment se fait-il que mon fichier (bourré de feuilles, de références circulaires et autres magies d'Excel), soit si lourd ? 11 Mo...

Merci à tous,
Bonne journée.
 

Staple1600

XLDnaute Barbatruc
Re : Problème avec le presse-papier (ActiveSheet.Paste)

Bonjour

Pour vider le Clipboard
Set MyData = New DataObject
MyData.SetText ""
MyData.PutInClipboard
EDITION
PS:peux-tu créer une copie de ton classeur (avec sa structure originelle: nom des feuilles )
Mais ne garde qu'une dizaine de lignes par feuille.
Et importe de code VBA dans ce nouveau classeur.
Zippes le et poste le ici
• Pour importer un module : dans Excel ( à partir du classeur original, faire ALT+F11
Sélectionne tes modules un à un puis dans le menu:
Puis Fichier/Exporter
Ensuite dans la copie
Fichier /Importer


TU peux aussi faire cette manip en déplaçant à la souris les éléments VBA du classeur original vers le projet VBA (VBAProject) de la copie.
 
Dernière édition:

yremy

XLDnaute Junior
Re : Problème avec le presse-papier (ActiveSheet.Paste)

Merci pour la piste, Staple1600 !

Oui, en effet, je pourrais demander à l'utilisateur de commencer par là, avant de copier le rapport...
Encore un bouton, quoi...
J'ai un fichier tout plein d'acnée juvénile
:)
 

yremy

XLDnaute Junior
Re : Problème avec le presse-papier (ActiveSheet.Paste)

Bonjour, ici se trouve le fichier zippé (2 Mo)

Si tu n'es pas lassé...

PS : c'est marrant, j'ai fait la Rue D'Ech...
Epi j'ai fait en sorte qu'on casse tous les carreaux de l"ancienne...
Un ancien Rennais. (La Harpe = viré ; Echanges = le top).
Villejean ; à côté...

Aloha !!!

Un Rennais...
Tu vois Ste Anne de Bretagne ... ?
Ben... Pas loin...

Aujourd'hui : Chamonix...

Amitiés. Et à Rennes aussi.
Yves


Cela étant, je n'arrive pas à tomber sous les 355 Ko... (quand bien même je suis tes instructions à la lettre...)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Problème avec le presse-papier (ActiveSheet.Paste)

Re



Oui j'ai vu ton fichier

Je te suggère ceci:

Essayes de faire une version light pour le forum,
(sans images, sans couleurs, avec peu de données dans les feuilles) et contenant uniquement le code VBA concernant la question posée dans ce fil.
 

Discussions similaires

Statistiques des forums

Discussions
312 111
Messages
2 085 399
Membres
102 882
dernier inscrit
Sultan94