Problème macro

bonjour ,

voilà j'ai une macro de contrôle et j’aimerais l’appliquer à plusieurs fichiers Excel sans les ouvrir , si quelqu’un à des idées je suis prôneur merci.

voila la macro en question:

Sub controle()

With Worksheets("AR-Synthèse")

derlig = .Range("a" & Rows.Count).End(xlUp).Row

For i = 10 To derlig

' test Positionnement du segment dans une case noire de la matrice (ELS ou PEL)

If .Range("CI" & i) = "Noir" Or .Range("CO" & i) = "Noir" Then

res = "O"

' test Positionnement du segment dans une case grise ou noire de la matrice (ELS ou PEL) et écart à l’article 14 ou 8

ElseIf (.Range("CI" & i) = "Noir" Or .Range("CO" & i) = "Noir" Or .Range("CI" & i) = "Gris" Or .Range("CO" & i) = "Gris") And (.Range("DQ" & i) = "O" Or .Range("DR" & i) = "O") Then

res = "O"

' test Positionnement du segment dans une case grise de la matrice (ELS ou PEL) et année de pose >=2006

ElseIf (.Range("CI" & i) = "Gris" Or .Range("CO" & i) = "Gris") And .Range("P" & i) >= 2006 Then

res = "O"

Else

res = "N"

End If

'mettre résultat en colonne DS

.Range("DS" & i) = res

Next i

End With

End Sub

merci d'avance.

bonsoir,

voici une macro à tester, elle appliquera la procedure controle sur la feuille "AR-Synthèse" de tous les fichiers dont le nom se trouve en colonne A d'une feuille "listedefichiers" à créer, dans le classeur qui contient cette macro.

Private Sub controle(wb As Object)

With wb.Worksheets("AR-Synthèse")

derlig = .Range("a" & Rows.Count).End(xlUp).Row

For i = 10 To derlig

' test Positionnement du segment dans une case noire de la matrice (ELS ou PEL)
If .Range("CI" & i) = "Noir" Or .Range("CO" & i) = "Noir" Then
res = "O"

' test Positionnement du segment dans une case grise ou noire de la matrice (ELS ou PEL) et écart à l’article 14 ou 8
ElseIf (.Range("CI" & i) = "Noir" Or .Range("CO" & i) = "Noir" Or .Range("CI" & i) = "Gris" Or .Range("CO" & i) = "Gris") And (.Range("DQ" & i) = "O" Or .Range("DR" & i) = "O") Then
res = "O"

' test Positionnement du segment dans une case grise de la matrice (ELS ou PEL) et année de pose >=2006
ElseIf (.Range("CI" & i) = "Gris" Or .Range("CO" & i) = "Gris") And .Range("P" & i) >= 2006 Then
res = "O"
Else
res = "N"
End If
'mettre résultat en colonne DS
.Range("DS" & i) = res
Next i
End With

End Sub

Sub pf()
Dim wb As Object
Set twb = ThisWorkbook.Worksheets("listedefichiers")
i = 1
f = twb.Range("A" & i)
While f <> ""

Set wb = Workbooks.Open(f)
Call controle(wb)
wb.Save
wb.Close
i = i + 1
f = twb.Range("A" & i)
Wend
Set wb = Nothing
Set twb = Nothing
End Sub

merci bc j'avais perdus espoirs ça marche §§ .

Rechercher des sujets similaires à "probleme macro"