VBA recherche dans un classeur fermé

Hicsygrek

XLDnaute Occasionnel
Bonjour à tous,

Je voudrais faire une chose toute "con" :eek: qui consiste à contrôler dans un autre fichier excel fermé si un onglet portant un nom X Y Z (par exemple) existe.

Si tel est le cas, je voudrais que le code cherche une valeur dans la colonne A (masquée) allant de 1 à 40 disons ...

Si il trouve la valeur 11 dans cette colonne, alors la checkbox11 sera automatiquement cochée etc... Autrement la checkbox n'est pas cochée.

S'il n'existe pas de feuille portant le nom chercher -> End Sub. :)

A expliquer ça semble bidon mais dès qu'il s'agit du code c'est carrément une autre affaire. J'ai trouvé des extraits de code utilisant ADO mais étant débutant j'ignore vraiment comment ça fonctionne, les seuls essais m'ont menés à des erreurs d'autant que ces codes me paraissent bien compliqués pour pas grand chose :rolleyes: .

De plus je sais pas trop comment lui demander de chercher une valeur dans une colonne et de me renvoyer "vrai" si elle est trouvée. :confused:

Ca me semble d'une difficulté "débutant" mais je dois avoir la tête dans le guidon et rater les évidences :(

Si quelqu'un à une idée, je l'en remercie d'avance pour sa réponse. :D
 

Hicsygrek

XLDnaute Occasionnel
Re : VBA recherche dans un classeur fermé

Re,

J'ai trouvé l'origine du problème.
Le fait que la colonne A soit masquée l'empèche de trouver la valeur 11.
Il suffit de l'afficher et de la masquer à nouveau, ainsi la checkbox est cochée. :D

Voici donc le code final, si ça peut aider des gens :
Code:
Private Sub ComboBox1_Change()

Dim cb1 As String 'déclare la variable cb1 (ComboBox1)
Dim cb3 As String 'déclare la variable cb3 (ComboBox3)

cb1 = ComboBox1.Value 'définit la variable cb1
cb3 = ComboBox3.Value 'définit la variable cb3

Dim Ws As Worksheet
  
Dim fichier As String, wb As Workbook
fichier = ThisWorkbook.Path & "\" & cb3 & ".xlsx"
If Dir(fichier) <> "" Then Set wb = Workbooks.Open(fichier)
   
      Application.ScreenUpdating = False
    
            For Each Ws In ActiveWorkbook.Worksheets 'on vérifie si une feuille porte le nom de la machine sélectionnée
                If Ws.Name = cb1 Then
                
                Range("A:A").EntireColumn.Hidden = False
                
                Dim x As Range
                Set x = Sheets(cb1).Range("A:A").Find("11", , xlValues, xlWhole, , , False)
                If Not x Is Nothing Then
                    Former.ChkB11 = True
                Else
                    Former.ChkB11 = False
                End If
                                    
                Else 'si aucune feuille, on sort
                    Range("A:A").EntireColumn.Hidden = True
                    Workbooks(cb3).Close
                    Exit Sub
        
                End If
            Exit For
            Next

        Range("A:A").EntireColumn.Hidden = True
        Workbooks(cb3).Saved = True
        Workbooks(cb3).Close

End Sub

Merci à tous pour votre aide ! :D
 

Discussions similaires

Statistiques des forums

Discussions
312 610
Messages
2 090 217
Membres
104 452
dernier inscrit
hamzamounir