XL 2021 Besoin de modifier Workbooks("classeur1") selon le classeur ouvert

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous :)

Pour finaliser mon code, grâce à vous tous très avancé, il ne me reste plus qu'un code à trouver....
Je cherche mais pour l'instant, malgré mes tentatives et recherches, je n'ai pas encore trouvé.

contexte
4 classeurs peuvent être concernés par ce code :
- isitelFacturation Nouveau,
- classeur1,
- classeur2,
- classeur3
Seuls 2 de ces classeurs sont ouverts en même temps :
- isitelFacturation Nouveau et classeur1 ou classeur2 ou classeur3

Dans mon code il y a cette ligne :
ActiveCell.Offset(0, 0).Resize(499, 1) = Workbooks("classeur1").Sheets("RendezVous").Range("L4:L500").Value
Je cherche à modifier Workbooks("classeur1") pour que ce soit les informations du "classeur qui est ouvert (NON actif) "qui soient collé dans mon classeur actif (sachant que le classeur actif est toujours : isitelFacturation Nouveau).

Auriez-vous le bon code ?
Si besoin, je ferai les classeurs test...
Merci à toutes et à tous :)

J'espère que mon explication sera compréhensible. Je reste à l'écoute pour eclairer si besoin :)
Pour les gardiens de la galaxie :
Les msg intempestifs, non constructifs, toujours gênants pour le fil et l'image de notre Forum, inutile de répondre, je ne donnerai pas suite.
:)
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Lionel,
Un peu en aveugle et sans test :
VB:
Sub Test()
    tablo = Array("classeur1", "classeur2", "classeur3")
    For i = 0 To 2
        NomFichier = tablo(i)
        If FichierOuvert(NomFichier) Then Exit For
    Next i
    On Error GoTo Fin ' Fin si aucun fichier cherché n'est ouvert
    ActiveCell.Offset(0, 0).Resize(499, 1) = Workbooks(NomFichier).Sheets("RendezVous").Range("L4:L500").Value
Fin:
End Sub
Function FichierOuvert(Nom) As Boolean
    FichierOuvert = False: N = FreeFile
    On Error Resume Next
    Open Nom For Input Lock Read As #N
    If Err = 70 Then FichierOuvert = True
End Function



Pour les gardiens de la galaxie :
Les msg intempestifs, non constructifs, toujours gênants pour le fil et l'image de notre Forum, inutile de répondre, je ne donnerai pas suite.
Pas bien compris, comme d'hab. :)
 

Usine à gaz

XLDnaute Barbatruc
Bjr sylvanu :)
"Pas bien compris, comme d'hab" lol, je suis donc toujours aussi mauvais ? ;)
Souvent tu sembles ne pas comprendre mais aussi souvent, en fait tu comprends et tu trouves les bons codes.

Merci à toi,
Je teste dès que je peux et si ça ne fonctionne pas, je fais les fichiers test.
:)
PS : Pour les gardiens de la galaxie, c'est un petit rappel pour certains :)
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Pour les gardiens de la galaxie :
Les msg intempestifs, non constructifs, toujours gênants pour le fil et l'image de notre Forum, inutile de répondre, je ne donnerai pas suite.
T'inquiète, on a bien compris que tu n'en tenais absolument pas compte puisque, bien qu'on t'ai déjà dit plusieurs fois que Offset(0,0) ne servait à rien, on le voit toujours présent dans ton code. 😉

Donc cette fois-ci je ne le dirais pas. 🙊
 

ChTi160

XLDnaute Barbatruc
Bonjour ,
Peut-être ainsi
Vérifier si tel classeur est ouvert !
VB:
Sub TestClasseurOuvert()

    Dim ClOuvert As String
    Dim TabClasseurs()
    Dim i As Integer
    ClOuvert = ""
    ' On met dans le tableau les noms des classeurs à vérifier
    TabClasseurs = Array("Classeur 1.xlsx", "Classeur 2.xlsx", "Classeur 3.xlsx")        'mOdifier les Noms en fonction
    ' On boucle sur les Lignes du tableau pour passer le Nom des Classeurs a la Fonction
    For i = LBound(TabClasseurs) To UBound(TabClasseurs)
        If EstOuvert(TabClasseurs(i)) = True Then
            ClOuvert = TabClasseurs(i)
            Exit For
        End If
    Next i
    ' Afficher le résultat
    If ClOuvert <> "" Then
        MsgBox "Le classeur '" & ClOuvert & "' est ouvert."
    Else
        MsgBox "Aucun des classeurs spécifiés n'est ouvert."
    End If
End Sub

Function EstOuvert(ByVal nomClasseur As String) As Boolean
    Dim classeur As Workbook
    On Error Resume Next
    Set classeur = Workbooks(nomClasseur)
    On Error GoTo 0
    If Not classeur Is Nothing Then
        EstOuvert = True
    Else
        EstOuvert = False
    End If
End Function
Bonne Journée
Jean marie
PS: étant un peu long je n'avais pas vu les messages précédents Lol
Surement des similitudes avec d'autres réponses §
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Bonjour ,
Peut-être ainsi
Vérifier si tel classeur est ouvert !
VB:
Sub TestClasseurOuvert()

    Dim ClOuvert As String
    Dim TabClasseurs()
    Dim i As Integer
    ClOuvert = ""
    ' On met dans le tableau les noms des classeurs à vérifier
    TabClasseurs = Array("Classeur 1.xlsx", "Classeur 2.xlsx", "Classeur 3.xlsx")        'mOdifier les Noms en fonction
    ' On boucle sur les Lignes du tableau pour passer le Nom des Classeurs a la Fonction
    For i = LBound(TabClasseurs) To UBound(TabClasseurs)
        If EstOuvert(TabClasseurs(i)) = True Then
            ClOuvert = TabClasseurs(i)
            Exit For
        End If
    Next i  
    ' Afficher le résultat
    If ClOuvert <> "" Then
        MsgBox "Le classeur '" & ClOuvert & "' est ouvert."
    Else
        MsgBox "Aucun des classeurs spécifiés n'est ouvert."
    End If
End Sub

Function EstOuvert(ByVal nomClasseur As String) As Boolean
    Dim classeur As Workbook  
    On Error Resume Next
    Set classeur = Workbooks(nomClasseur)
    On Error GoTo 0  
    If Not classeur Is Nothing Then
        EstOuvert = True
    Else
        EstOuvert = False
    End If
End Function
Bjr ChTi160 :)
Merci pour ton code
Je regarde aussi dès que j'ai un moment...
:)
 

Usine à gaz

XLDnaute Barbatruc
Bonjour Lionel,
Un peu en aveugle et sans test :
VB:
Sub Test()
    tablo = Array("classeur1", "classeur2", "classeur3")
    For i = 0 To 2
        NomFichier = tablo(i)
        If FichierOuvert(NomFichier) Then Exit For
    Next i
    On Error GoTo Fin ' Fin si aucun fichier cherché n'est ouvert
    ActiveCell.Offset(0, 0).Resize(499, 1) = Workbooks(NomFichier).Sheets("RendezVous").Range("L4:L500").Value
Fin:
End Sub
Function FichierOuvert(Nom) As Boolean
    FichierOuvert = False: N = FreeFile
    On Error Resume Next
    Open Nom For Input Lock Read As #N
    If Err = 70 Then FichierOuvert = True
End Function




Pas bien compris, comme d'hab. :)
Re-Bjr sylvanu :)
Ton code a l'air bien mais j'ai un souci :
Sachant que mes classeurs sont :
tablo = Array("classeur1", "classeur2", "classeur3")
Pour cette ligne ? :
ActiveCell.Offset(0, 0).Resize(499, 1) = Workbooks(NomFichier).Sheets("RendezVous").Range("L4:L500").Value
Je laisse "NomFichier" ?
:)
 

dysorthographie

XLDnaute Accro
Bonjour,
Je t'avais donné la solution :https://excel-downloads.com/threads/faire-mieux-mon-code.20078655/post-20606624

Code:
Sub test2()
'SELECTION ICHIER RDdVs
  If IsOpen("isitelImmobRdV ImenNF.xlsm") Then TraitementFichier (Windows("isitelImmobRdV ImenNF.xlsm")): Exit Sub
 If IsOpen("isitelImmobRdV SondaNF.xlsm") Then TraitementFichier Windows("isitelImmobRdV SondaNF.xlsm"): Exit Sub
 If IsOpen("isitelImmobRdV StephanieNF.xlsm") Then TraitementFichier Windows("isitelImmobRdV StephanieNF.xlsm"): Exit Sub
 
End Sub
Sub TraitementFichier(Fichier As Workbook)
 'Traitement
 
End Sub
 

job75

XLDnaute Barbatruc
Bonjour Lionel, le forum,

Une solution très simple :
VB:
Sub Test()
Dim a, i
a = Array("isitelFacturation Nouveau", "Classeur1", "Classeur2", "Classeur3")
If Not ActiveWorkbook.Name Like a(0) & ".xl*" Then Exit Sub
ActiveCell.Offset(0, 0).Resize(499, 1) = "" 'RAZ
On Error Resume Next
For i = 1 To UBound(a)
    ActiveCell.Offset(0, 0).Resize(499, 1) = Workbooks(a(i)).Sheets("RendezVous").Range("L4:L502").Value
Next
End Sub
A+
 

Discussions similaires

Statistiques des forums

Discussions
314 716
Messages
2 112 161
Membres
111 447
dernier inscrit
jasontantane