1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
| Option Explicit
Sub Marc31()
Dim oWkb As Workbook
Dim oRng As Range
Dim myPath As String, myFile As String
Dim valeur As String, commentaire As String, com As String, champ1 As String, champ2 As String, i As Integer
Dim oWksh As Worksheet
myPath = "C:\Users\...\Desktop\test"
myFile = Dir(myPath & "\*.*")
Set oWkb = ThisWorkbook
'Ou
'Set oWkb = Workbooks("Le_nom_de_mon_classeur.xlsm")
Do While myFile <> ""
Call ClasseurOuvert(myPath & "\" & myFile)
With Workbooks(myFile)
If FeuilleExiste(.Name, Left(myFile, 2)) Then
With .Worksheets(Left(myFile, 2))
'Set oRng sur C1
Set oRng = .Range("C1")
'Parcours toute les lignes de C1 à Cn avec n = dernière ligne non-vide
For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row - 1
If oRng.Offset(i, 0) Like "MONTPELLIER" Or oRng.Offset(i, 0) Like "ma_ville_2" Then
'On fait un test pour savoir si le classeur oWbk contient une feuille qui s'appelle comme dans la cellule Ci (de MyFile)
If FeuilleExiste(oWkb.Name, oRng.Offset(i, 0)) Then
'Si oui, alors on insère la ligne
'oWkb.Worksheets(oRng.Offset(i, 0).Value).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).EntireRow.Value = oRng.Offset(i, 0).EntireRow.Value
oWkb.Worksheets(oRng.Offset(i, 0).Value).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, 5).Value = oRng.Offset(i, -2).Resize(1, 5).Value
End If
End If
Next i
End With
End If
.Close
End With
myFile = Dir()
Loop
End Sub
Function ClasseurOuvert(NomFich)
On Error Resume Next
Workbooks(NomFich).Activate
If Err <> 0 Then Workbooks.Open Filename:=NomFich
On Error GoTo 0
End Function
Function FeuilleExiste(NomClasseur As String, NomFeuille As String) As Boolean
Dim f As Object
On Error Resume Next
Set f = Workbooks(NomClasseur).Worksheets(NomFeuille)
If Err = 0 Then FeuilleExiste = True
Set f = Nothing
End Function
Sub save_loucinev()
'Dim Nom_fichier As String
'
'Nom_fichier = "My file"
'ActiveWorkbook.SaveAs Filename:="C:\Users\mbourgeois\Desktop\test\" & Nom_fichier
UserForm1.Show
End Sub
'Sub souhail72()
'Dim oRng As Range
'Dim oWksh As Worksheet
'Dim oLast As Integer
'Dim oCell As Range
'
'For Each oWksh In Worksheets
' If oWksh.Name <> "Ma feuille de résultats" Then
' With oWksh
' oLast = WorksheetFunction.Max(.Cells(Rows.Count, 4).End(xlUp).Row, .Cells(Rows.Count, 5).End(xlUp).Row, .Cells(Rows.Count, 6).End(xlUp).Row)
' Set oRng = .Range("D1:F" & oLast)
' For Each oCell In oRng
' If oCell <> 0 Then
' 'Valeur de oCell en colonne A de ma feuille de résultats.
' Worksheets("Ma feuille de résultats").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = oCell
' End If
' Next oCell
' End With
' End If
'Next oWksh
'
'End Sub
Sub souhail72()
Dim oRng As Range
Dim oWksh As Worksheet
Dim i As Integer
'Parcours toutes les feuilles
For Each oWksh In Worksheets
'Si celle-ci est différente de "Ma feuille de résultats"
If oWksh.Name <> "Ma feuille de résultats" Then
'On utilise la feuille
With oWksh
'On set la variable oRng sur G1
Set oRng = .Range("D1")
'Pour i = 1 jusqu'à la dernière cellule non-vide de G
For i = 1 To .Cells(Rows.Count, 7).End(xlUp).Row - 1
'Si Gi est différente de 0
If oRng.Offset(i, 0) <> 0 Then
'On rentre dans la condition
'La ligne suivante recopie en dernière ligne de "Ma feuille de résultats" sur la plage de valeur A-D les valeurs contenue dans Range(.Cells(i + 1, 2), .Cells(i + 1, 5)).Value
'Range(.Cells(i + 1, 5), .Cells(i + 1, 8)).Value, c'est la Range à la ligne Gi et en colonne E-H (5-8)
Worksheets("Ma feuille de résultats").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, 4).Value = Range(.Cells(i + 1, 2), .Cells(i + 1, 5)).Value
End If
Next i
End With
End If
Next oWksh
End Sub |
Partager