Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Suite probleme vbs

2 réponses
Avatar
thierry
Bonjour ,

pour faire suite au problème lié au pilotage du format
d'une feuille excel à partir d'un script vbs ,
voici le code demandé par Daniel M
avec un rappel du problème :

le code publié ci dessous fonctionne bien sous une macro
dans excel (à quelques détails prés) et si j'execute
ce meme code depuis un script vbs cela ne fonctionne pas :


**************** PARTIE AJOUTEE POUR LE SCRIPT VBS **************
Set ArgObj = WScript.Arguments
If ArgObj.Count <> 1 Then
'MsgBox ArgObj.Count
MsgBox "Nom de fichier incorrect !"
WScript.Quit (1)
End If
sFile = ArgObj(0)
'MsgBox sFile
Set objExcel = CreateObject("Excel.Application")
Set objWorkBook = objExcel.Workbooks.Open(sFile)
If Err <> 0 Then
MsgBox "Fichier Excel introuvable/impossible à ouvrir !"
Set objExcel = Nothing
WScript.Quit (1)
End If
***************Fin de la partie nécessaire pour le script vbs **************




' DEBUT DU FORMATAGE QUI NE FONCTIONNE PAS QUAND IL EST EXECUTE DEPUIS UN
VBS MAIS QUI FONCTIONNE TRES BIEN DEPUIS EXCEL
'***********************************************************
objWorkBook.Sheets("Feuil1").Select

Range("A7:B7").Select

With Selection

.HorizontalAlignment = xlGeneral

.VerticalAlignment = xlCenter

.WrapText = False

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = True

End With



Selection.UnMerge

Columns("A:A").Select

Selection.EntireColumn.Hidden = True



Columns("B:B").Select

With Selection

.HorizontalAlignment = xlLeft

.WrapText = False

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = False

End With



With ActiveSheet.PageSetup

.LeftHeader = ""

.CenterHeader = ""

.RightHeader = ""

.LeftFooter = ""

.CenterFooter = ""

.RightFooter = "p. &P/&N"

.LeftMargin = Application.InchesToPoints(0.669291338582677)

.RightMargin = Application.InchesToPoints(0.590551181102362)

.TopMargin = Application.InchesToPoints(0.590551181102362)

.BottomMargin = Application.InchesToPoints(0.78740157480315)

.HeaderMargin = Application.InchesToPoints(0.511811023622047)

.FooterMargin = Application.InchesToPoints(0.511811023622047)

.PrintHeadings = False

.PrintGridlines = False

.PrintComments = xlPrintNoComments

.PrintQuality = 600

.CenterHorizontally = True

.CenterVertically = False

.Orientation = xlPortrait

.Draft = False

.PaperSize = xlPaperA4

.FirstPageNumber = xlAutomatic

.Order = xlDownThenOver

.BlackAndWhite = False

.Zoom = False

.FitToPagesWide = 1

.FitToPagesTall = False

.PrintErrors = xlPrintErrorsDisplayed

End With
*********** Fin du formatage *************
objWorkBook.Save
objWorkBook.Close
Set objWorkBook = Nothing
Set objExcel = Nothing

****************

!!!! Je précise que le script vbs arrive quand meme a ouvrir le fichier a
l'enregistrer et a le fermer . De plus si j'inclus dans mon code une
suppression de colonne : columns(2).delete cela fonctionne.
Ca ne fonctionne plus des que je veux mettre en forme.


merci d'avance
srmt
t

2 réponses

Avatar
papou
Bonjour
A vu de nez je dirais qu'il te faut utiliser une qualification complète pour
que cela fonctionne.
Exemple :
Range("A7:B7").Select
objWorkBook.Sheets("Feuil1").Range("A7:B7").Select


Cordialement
Pascal


"thierry" a écrit dans le message de
news:410748a1$0$12496$
Bonjour ,

pour faire suite au problème lié au pilotage du format
d'une feuille excel à partir d'un script vbs ,
voici le code demandé par Daniel M
avec un rappel du problème :

le code publié ci dessous fonctionne bien sous une macro
dans excel (à quelques détails prés) et si j'execute
ce meme code depuis un script vbs cela ne fonctionne pas :


**************** PARTIE AJOUTEE POUR LE SCRIPT VBS **************
Set ArgObj = WScript.Arguments
If ArgObj.Count <> 1 Then
'MsgBox ArgObj.Count
MsgBox "Nom de fichier incorrect !"
WScript.Quit (1)
End If
sFile = ArgObj(0)
'MsgBox sFile
Set objExcel = CreateObject("Excel.Application")
Set objWorkBook = objExcel.Workbooks.Open(sFile)
If Err <> 0 Then
MsgBox "Fichier Excel introuvable/impossible à ouvrir !"
Set objExcel = Nothing
WScript.Quit (1)
End If
***************Fin de la partie nécessaire pour le script vbs
**************





' DEBUT DU FORMATAGE QUI NE FONCTIONNE PAS QUAND IL EST EXECUTE DEPUIS UN
VBS MAIS QUI FONCTIONNE TRES BIEN DEPUIS EXCEL
'***********************************************************
objWorkBook.Sheets("Feuil1").Select

Range("A7:B7").Select

With Selection

.HorizontalAlignment = xlGeneral

.VerticalAlignment = xlCenter

.WrapText = False

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = True

End With



Selection.UnMerge

Columns("A:A").Select

Selection.EntireColumn.Hidden = True



Columns("B:B").Select

With Selection

.HorizontalAlignment = xlLeft

.WrapText = False

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = False

End With



With ActiveSheet.PageSetup

.LeftHeader = ""

.CenterHeader = ""

.RightHeader = ""

.LeftFooter = ""

.CenterFooter = ""

.RightFooter = "p. &P/&N"

.LeftMargin = Application.InchesToPoints(0.669291338582677)

.RightMargin = Application.InchesToPoints(0.590551181102362)

.TopMargin = Application.InchesToPoints(0.590551181102362)

.BottomMargin = Application.InchesToPoints(0.78740157480315)

.HeaderMargin = Application.InchesToPoints(0.511811023622047)

.FooterMargin = Application.InchesToPoints(0.511811023622047)

.PrintHeadings = False

.PrintGridlines = False

.PrintComments = xlPrintNoComments

.PrintQuality = 600

.CenterHorizontally = True

.CenterVertically = False

.Orientation = xlPortrait

.Draft = False

.PaperSize = xlPaperA4

.FirstPageNumber = xlAutomatic

.Order = xlDownThenOver

.BlackAndWhite = False

.Zoom = False

.FitToPagesWide = 1

.FitToPagesTall = False

.PrintErrors = xlPrintErrorsDisplayed

End With
*********** Fin du formatage *************
objWorkBook.Save
objWorkBook.Close
Set objWorkBook = Nothing
Set objExcel = Nothing

****************

!!!! Je précise que le script vbs arrive quand meme a ouvrir le fichier a
l'enregistrer et a le fermer . De plus si j'inclus dans mon code une
suppression de colonne : columns(2).delete cela fonctionne.
Ca ne fonctionne plus des que je veux mettre en forme.


merci d'avance
srmt
t



Avatar
Daniel.M
Thierry,

Même si l'enregistreur de macro SELECTionne avant de faire les opérations, tu
devrais éviter de le faire dans ton code. Il faut écremer (tous les SELECT) le
code de l'enregistreur.

Comme Papou te l'a dit, il faut qualifier complètement tes objets (utilise
With).

Donc:

With objWorkBook.Sheets("Feuil1")

With .Range("A7:B7")
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
.UnMerge
End With

.Columns("A:A").EntireColumn.Hidden = True ' <== remarque le Point au
départ
With .Columns("B:B") ' <== le point au départ (fait dépendre de la feuille)
.HorizontalAlignment = xlLeft
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With .ActiveSheet.PageSetup
'etc.
End With

End With ' avec cette feuille

Salutations,

Daniel M.