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 Submerci bc j'avais perdus espoirs ça marche §§