Préférablement une seule question par post...
Ceci dit, ce n'est pas très clair... Est-ce que tu veux avoir la valeur la plus haute de chaque ligne ou d'une seule ligne en particulier ? et si c'est le cas laquelle ou comment la trouver ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionDim Fenetre As Window For Each Fenetre in Windows If Fenetre.Caption = "NomDuFichieràOuvrir" then Trouvé = True ' et on ne cherche pas à l'ouvrir une 2e fois ......
Et maintenant, où est-ce que tu coinces ?==> Ou peut on trouver des cours sur VBA excel qui permettent de bien faire distingo entre module, module de classe, function ainsi que leur portée. Pour l'instant je n'en ai pas une idée très précise. Je me débrouille;
Function RechercheFichier() As String Function RechercheFichier() As String Dim Fenetre As Window For Each Fenetre In Windows If Fenetre.Caption = " FICHIER.xls" Then Trouvé = True ' et on ne cherche pas à l'ouvrir une 2e fois MsgBox " FICIER.XLS OUVERT CHECK MFC" Exit For End If Dim fd As FileDialog Dim NomFichier As String Set fd = Application.FileDialog(msoFileDialogFilePicker) With fd .Filters.Add "Fichiers Excel", "*.xls" .Title = "TITRE" .InitialFileName = "FICHIER.xls" End With If fd.Show -1 Then NomFichier fd.SelectedItems(1) RechercheFichier = NomFichier Set fd = Nothing Next Fenetre End Function
Function RechercheFichier() As String Dim Fenetre As Window Dim fd As FileDialog Dim NomFichier As String For Each Fenetre In Windows If Fenetre.Caption = "FICHIER.xls" Then Trouvé = True ' et on ne cherche pas à l'ouvrir une 2e fois MsgBox " FICIER.XLS OUVERT CHECK MFC" NomFichier = Fenetre .Caption Exit For End If Next Fenetre If Not Trouvé then 'Faire la suite si le fichier n'a pas été trouvé Set fd = Application.FileDialog(msoFileDialogFilePicker) With fd .Filters.Add "Fichiers Excel", "*.xls" .Title = "TITRE" .InitialFileName = "FICHIER.xls" End With If fd.Show -1 Then NomFichier fd.SelectedItems(1) End If RechercheFichier = NomFichier Set fd = Nothing 'Next Fenetre End Function
Private Sub Workbook_Open() Call RechercheFichier End Sub
Function RechercheFichier() As String Dim Fenetre As Window Dim fd As FileDialog Dim NomFichier As String For Each Fenetre In Windows If Fenetre.Caption = "FICHIER.xls" Then Trouvé = True ' et on ne cherche pas à l'ouvrir une 2e fois MsgBox " FICIER.XLS OUVERT CHECK MFC" NomFichier = Fenetre .Caption Exit For End If Next Fenetre If Not Trouvé then 'Faire la suite si le fichier n'a pas été trouvé Set fd = Application.FileDialog(msoFileDialogFilePicker) With fd .Filters.Add "Fichiers Excel", "*.xls" .Title = "TITRE" .InitialFileName = "C:\Documents and Settings\..." End With If fd.Show -1 Then NomFichier fd.SelectedItems(1) End If RechercheFichier = NomFichier If NomFichier <> "FICHIER.xls" Then MsgBox " MAUVAUIS FICHIER REESSAYEZ" ElseIf NomFichier = "FICHIER.xls" Then Workbooks.Open NomFichier End If Set fd = Nothing 'Next Fenetre End Function
Dim toto As Object Set toto = GetObject("d:\Classeur1.xlsm") toto.Windows(1).Visible = True toto.Activate
Private Sub Workbook_Open() Dim NomFichier as String NomFichier = RechercheFichier() If NomFichier = "" Then Exit Sub 'a été annulé If NomFichier <> "OK" then 's'il n'est pas déjà ouvert Workbooks.Open NomFichier End If '... et le reste du code End Sub Function RechercheFichier() As String Dim Fenetre As Window Dim fd As FileDialog Dim NomFichier As String For Each Fenetre In Windows If Fenetre.Caption = "FICHIER.xls" Then Trouvé = True ' et on ne cherche pas à l'ouvrir une 2e fois MsgBox " FICHIER.XLS OUVERT CHECK MFC" Windows("FICHIER.xls").Activate ' le fichier est activé et on sort RechercheFichier="OK" Exit Function End If Next Fenetre If Not Trouvé then 'Faire la suite si le fichier n'a pas été trouvé Set fd = Application.FileDialog(msoFileDialogFilePicker) With fd .Filters.Add "Fichiers Excel", "*.xls" .Title = "TITRE" .InitialFileName = "C:\Documents and Settings\..." End With If fd.Show = -1 Then NomFichier = fd.SelectedItems(1) RechercheFichier = NomFichier End If End If End Function
Par contre, si on l'ouvre une deuxième fois dans une autre instance d'Excel, il sera en lecture seule, si je ne me trompe ... (
La fonction GetObject met à l'abri de tels aléas. Si le classeur (celui choisi, quel que soit son nom, dans un répertoire) est déjà ouvert : n'en ouvrira pas un nouveau. Si au contraire non encore ouvert ===>> l'ouvrira