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" :
Bon, ça fonctionne correctement, pas trop lentement.
J'ai aussi, à l'ouverture de mon classeur :
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.
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.