[B]Controle avant d'ouvrir et copier d'un autre classeur[/B]

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

yakin78

XLDnaute Junior
Bonjour à tous

J'aimerai faire un controle sur une ouverture de fichier d'un autre classeur avant de copier la cellule,
si la feuille du classeur externe est nommée différent de Sheets("Externe") alors MsgBox( "mauvais Classeur")
et sortir de la boucle



Code:
Private Sub Transfert_Click()
    
Dim ligne As Integer
Dim I As Integer
     ligne = 2
     Cheminfichier = Application.GetOpenFilename("Fichiers Excels (*.xlsx), *.xlsx")
If Cheminfichier = False Then
    MsgBox ("Copie annulé")
Exit Sub
End If
                  
        Workbooks.Open Cheminfichier
For I = Len(Cheminfichier) To 1 Step -1
If Mid(Cheminfichier, I, 1) = "\" Then Exit For
Next
        nomfichier = Mid(Cheminfichier, I + 1, Len(Cheminfichier))
        ThisWorkbook.Sheets("Local").Range("A1") = Workbooks(nomfichier).Sheets("Externe").Range("A1").Value
         Workbooks(nomfichier).Close
         ligne = ligne + 1

         MsgBox ("Copie effectué avec succes !!")
         
End Sub

ce bout de code je l'ai trouvé dans ce forum
merci d'avance !!
 
Re : Controle avant d'ouvrir et copier d'un autre classeur

Bonjour,

Teste ce qui suit (fonction de contrôle avant ouverture) :
Code:
Private Sub Transfert_Click()

    Dim T() As String
    Dim Existe As Boolean
    Dim Cheminfichier
    Dim nomfichier As String
    Dim ligne As Integer
    Dim I As Integer

     ligne = 2
     Cheminfichier = Application.GetOpenFilename("Fichiers Excels (*.xlsx), *.xlsx")
     
    If Cheminfichier = False Then
    
        MsgBox ("Copie annulée !")
        Exit Sub
    
    End If
    
    'récupère les noms des feuilles
    If FeuilleExiste(Cheminfichier, "Externe") = False Then
        
        MsgBox "Pas le bon classeur ! :o("
        Exit Sub
        
    End If
                  
    Workbooks.Open Cheminfichier
    
    'c'est plus simple de cette façon pour récupérer seulement le nom du fichier
    nomfichier = Dir(Cheminfichier)
        
    ThisWorkbook.Sheets("Local").Range("A1") = Workbooks(nomfichier).Sheets("Externe").Range("A1").Value
    Workbooks(nomfichier).Close
    ligne = ligne + 1
    
    MsgBox ("Copie effectué avec succès !!")
         
End Sub

Function FeuilleExiste(Fichier, NomFeuille As String) As Boolean

    Dim Cat As Object
    Dim tbl As Object
    
    Set Cat = CreateObject("ADOX.Catalog")
   
    Cat.ActiveConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
                       Fichier & _
                       ";Extended Properties=""Excel 12.0;HDR=NO;IMEX=2;"""
    
    Set tbl = CreateObject("ADOX.Table")
    
    FeuilleExiste = False
    
    For Each tbl In Cat.Tables
        
        If Replace(tbl.Name, "$", "") = NomFeuille Then
        
            FeuilleExiste = True
            Exit For
            
        End If
    Next

End Function

Hervé.
 
Re : Controle avant d'ouvrir et copier d'un autre classeur

Salut Theze,

Evidemment si l'on teste après l'ouverture du fichier c'est plus facile :

Code:
Workbooks.Open cheminfichier
nomfichier = Dir(cheminfichier)
On Error Resume Next
If IsError(Workbooks(nomfichier).Sheets("Externe")) Then
  MsgBox "Mauvais fichier !"
  Workbooks(nomfichier).Close
  Exit Sub
End If
'suite du code
A+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
950
Réponses
5
Affichages
777
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
831
Retour