|
|
|
|
Adam Pierson, le mardi 13 décembre 2005 à 16:55:16Slt,
Voici un début de code !
Sub LocaliseStyle()
'
Dim Boucle, Limite As Integer
Limite = Range("A1").End(xlDown).Row
For Boucle = 1 To Limite
With Cells(Boucle, 1).Font
If ((.Name = "Arial") And (.Size = 10)) Then
MsgBox "Boucle = " & Boucle & " -> Style et police trouvé"
' Copier vers un autre feuille
' ou copier directement dans word par vba
' utiliser l'enregistreur de macro pour
' obtenir la syntaxe des objets.
End If
End With
Next Boucle
End Sub
Lupin |
Génial,
merci beaucoup. Mais ton code s'arrête dès qu'une ligne est vide. Quelle paramètre dois je mettre dans limite pour qu'il aille plus bas et pas forcément qu'en colonne A ? Désolé, mais je ne suis pas un pro du vba ;-) |
re:
Pour trouver la dernière ligne de la colonne A, celle-ci est identifé par la lettre [A] de "A1" Limite = Range("A1").End(xlDown).Row Cette ligne ne sert qui si tu ignore à quel ligne arrêter, et oui à la première celllule vide, il arrête. ******************************************************************* Si tu veux valider les lignes de 10 à 100 indépendament du contenu : La ligne [ For Boucle = 1 To Limite ] deviendra [ For Boucle = 10 To 100 ] Pour valider le style sur une cellule donnée, la ligne : [ With Cells(Boucle, 1).Font ] défini quelle cellule ! Cells(Boucle,1) ->>> ou Boucle représente la ligne, et 1 la colonne. Es-ce plus clair ainsi ? Lupin |
re :
Voilà une approche différente ! 1) Copier le code ci-dessous dans Excel 2) Lancer la macro [CreerBouton] 3) Sélectionner une plage contigu 4) Lancer le nouveau bouton 5) Sortie dans =>> "C:\Styles.doc"
Option Explicit
'
'Variables globale interne du module
Dim HWordApp As Variant
Dim hwdApp As Variant
Dim HCeDoc As Variant
'
Sub ExtraireStyle()
'Définition de variables
Dim Plage, Cellule As Range
'Capture de la sélection
Set Plage = ActiveWindow.RangeSelection
Range("A1").Select
'Pour chaque cellule de la plage
Call OuvrirWord
ActiveSheet.Select
For Each Cellule In Plage
Cellule.Select
With Cellule.Font
If ((.Name = "Arial") And (.Size = 10)) Then
'MsgBox "Boucle = " & Boucle & " -> Style et police trouvé"
Cellule.Copy
HWordApp.Selection.Paste
End If
End With
Next Cellule
Application.CutCopyMode = False
Call FermerWord
End Sub
'
Function OuvrirWord()
'Config VBS
On Error Resume Next
Set HWordApp = GetObject(, "Word.Application")
If Err.Number <> 0 Then
Set HWordApp = CreateObject("Word.Application")
End If
Err.Clear ' Efface l'objet Err
HWordApp.Visible = True
Set HCeDoc = HWordApp.Documents.Add
HCeDoc.Selection
End Function
'
Function FermerWord()
HWordApp.ActiveDocument.SaveAs ("C:\Styles.doc")
HWordApp.Quit
Set HCeDoc = Nothing
Set HWordApp = Nothing
End Function
'
Sub CreerBouton()
Dim MonCtr As Object
With Application
.CommandBars.Add(Name:="Essai1").Visible = True
Set MonCtr = .CommandBars("Essai1").Controls.Add(Type:=msoControlButton, ID:=2950, Before:=1)
End With
MonCtr.OnAction = "ExtraireStyle"
End Sub
Lupin |
Super génial le code.
Merci beaucoup |
re :
Tout le plaisirs est pour moi :-) J'avais déjà piloté Excel et Access depuis l'extérieur, mais pas Word, alors j'ai profité de la situation pour aprofondire le sujet. Voilà j'ai encore amélioré mon code :-)
Option Explicit
Option Private Module
'
'Variables globale interne du module
Dim HWordApp As Variant
Dim HCeDoc As Variant
'
Sub ExtraireStyle()
'Définition de variables
Dim Plage, Cellule As Range
Dim Reponse As Boolean
'Capture de la sélection
Set Plage = ActiveWindow.RangeSelection
Range("A1").Select
Reponse = OuvrirWord
If (Reponse) Then
ActiveSheet.Select
'Pour chaque cellule de la plage
For Each Cellule In Plage
'Sélectionne la cellule
Cellule.Select
With Cellule.Font
If ((.Name = "Arial") And (.Size = 10)) Then
'MsgBox "Adresse de cellule = " & .Adress & " -> Style et police trouvé"
'Copie le contenu dans le presse-papier
Cellule.Copy
'Colle dans Word
HWordApp.Selection.Paste
End If
End With
Next Cellule
Application.CutCopyMode = False
Reponse = FermerWord
If (Reponse) Then
MsgBox "Traitement complété."
Else
MsgBox "Impossible de fermer Word."
End If
Else
MsgBox "Impossible d'ouvrir Word."
End If
End Sub
'
Function OuvrirWord() As Boolean
'Config VBS
On Error Resume Next
Set HWordApp = GetObject(, "Word.Application")
If Err.Number <> 0 Then
Set HWordApp = CreateObject("Word.Application")
End If
Err.Clear ' Efface l'objet Err
HWordApp.Visible = True
Set HCeDoc = HWordApp.Documents.Add
HCeDoc.Selection
If (Err.Number <> 0) Then
OuvrirWord = True
Else
OuvrirWord = False
End If
End Function
'
Function FermerWord() As Boolean
On Error GoTo Err_FermerWord
HWordApp.ActiveDocument.SaveAs ("C:\Styles.doc")
HWordApp.Quit
Set HCeDoc = Nothing
Set HWordApp = Nothing
Exit_FermerWord:
FermerWord = True
Exit Function
Err_FermerWord:
FermerWord = False
End Function
'
Sub CreerBouton()
Dim MonCtr As Object
With Application
.CommandBars.Add(Name:="Essai1").Visible = True
Set MonCtr = .CommandBars("Essai1").Controls.Add(Type:=msoControlButton, ID:=2950, Before:=1)
End With
'MonCtr.OnAction = "NomDeModule.ExtraireStyle"
MonCtr.OnAction = "ExtraireStyle"
End Sub
|