Ouverture de fichiers protégés selon valeurs cellules
Bonjour à tous,
Après avoir cherché (attentivement je l'espère) dans le forum je reviens vers vous pour une problématique.
J'ai mis dans un fichier de base
dans les cellules E2 à E20 le chemin du fichier;
dans les cellules F2 à F20 le nom du fichier;
dans les cellules G2 à G20 le mot de passe du fichier;
J'ai réussi à créer une macro depuis le fichier de base qui ouvre le premier fichier grâce au valeur E2;F2;G2 (avec l'aide de variable), faire des opérations et fermer le fichier.
La question est: Comment faire la boucle pour traiter le fichier E3;F3;G3 et ainsi de suite jusqu'à la fin de la plage déterminée (dans cette exemple E20;F20;G20)?
C'est sûrement tout bête Do while? Mais je n'ai pas réussi.
J'espère avoir été clair dans ma demande, et si ce n'est pas le cas vous savez quoi faire. Merci d'avance pour vos réponses.
Bonjour,
une proposition
Sub aargh()
'J 'ai mis dans un fichier de base
'dans les cellules E2 à E20 le chemin du fichier;
'dans les cellules F2 à F20 le nom du fichier;
'dans les cellules G2 à G20 le mot de passe du fichier;
' J 'ai réussi à créer une macro depuis le fichier de base qui ouvre le premier fichier grâce au valeur E2;F2;G2 (avec l'aide de variable), faire des opérations et fermer le fichier.
Set wsr = ThisWorkbook.Sheets(1)
For i = 2 To 20
Workbook.Open wsr.Cells(i, "E") & wsr.Cells(i, "F"), Password:=wsr.Cells(i, "G")
'traitement classeur
Workbook.Close
Next i
End SubSalut Acide Sulfurique,
Merci pour ta proposition qui m'a permis d'avancer dans la résolution de mon problème. J'ai du faire quelques changements. Ci-dessous la solution finale
Sub Importation_des_données_des_utilisateurs()
Application.ScreenUpdating = False
'effacer les données se trouvant sur la base de données globales en partant de la cellule B4
'Attention les cellules du Range("b5:bv65000") sont protégées si plus de 65000 lignes!!
'il faut modifier cette protection dans l'onglet
ThisWorkbook.Worksheets("SCI").Range("b5:bv65000").ClearContents
'ThisWorkbook.Worksheets("SCI").Range("b5:bv65000").ClearFormats
'importation de tous les fichier qui sont répertoriés dans les cellules E2:EXX "Chemin"
'les cellules F2:FXX "NomFichier" et les cellules G2:GXX "Password" de l'onglet "Contrôle"
'de la base de données.
'Pour que la macro fonctionne, il faut donc adapter ces cellules aux données de l'ORP
Set wsr = ThisWorkbook.Worksheets("Contrôle")
'il faut modifié le nombre To XX en fonction du nombre d'utilisateurs définis dans
'l'onglet "Contrôle" dans la plage E2:GXX
For I = 2 To 4
Chemin = wsr.Cells(I, "E").Value
NomFichier = wsr.Cells(I, "F").Value
Password = wsr.Cells(I, "G").Value
Set wkb = Workbooks.Open(Filename:=Chemin & NomFichier, Password:=Password)
'derlig = dernière ligne non vide sur la colonne D du fichier utilisateur en
'traitement dans la boucle
derlig = Workbooks(wkb.Name).Worksheets("SCI").Range("D" & Rows.Count).End(xlUp).Row
'derlig1 = dernière ligne non vide sur la colonne D du fichier de la base de données globales
derlig1 = ThisWorkbook.Worksheets("SCI").Range("D" & Rows.Count).End(xlUp).Row
'test si première utilisation
If derlig1 < 5 Then
derlig1 = 5
Else
derlig1 = derlig1 + 1
End If
'copie des donnees depuis le fichier individuel en traitement dans la boucle
'sur la base de données globales
Workbooks(wkb.Name).Worksheets("SCI").Range("b4:bv" & derlig).Copy ThisWorkbook.Worksheets("SCI").Range("b" & derlig1)
'Fermeture du fichier individuel en traitement dans la boucle
Workbooks(wkb.Name).Close False
Next I
Application.ScreenUpdating = True
End Sub
Merci pour ton aide.
Gladiator