Ouvrir une feuille en fonction du contenu d'une cellule

Bonjour à tous,

J'aurais besoin qu'on m'aide à concevoir un code VBA afin d'accéder à une feuille en fonction du contenu d'une cellule.

Dans fichier ci-joint (exemple_1.xlsb), j'ai une feuille de données "BDDE" qui contient diverses données. Je désire qu'à chaque fois que des cellules situées dans les colonnes "G" et "H" sont égales à "0", la cellule située dans la colonne "B" sur la même ligne que les cellules "G_" et "H_" doit permettre d'accéder à la feuille dont la valeur est située à la cellule C8. Le nombre de cellules "G_" et "H_" égales à "0" est variable ainsi que le nombre de feuilles à gauche de la feuille "BDDE".

Exemple 1 : Les cellules "G11" et "H11" sont égales à "0". Si je clique sur la cellule "B11", le code VBA doit rechercher la feuille contenant la valeur "224" en "C8"et ouvrir cette feuille.

Exemple 2 : Les cellules "G47" et "H47" sont égales à "0". Si je clique sur la cellule "B47", le code VBA doit rechercher la feuille contenant la valeur "243" en "C8" et ouvrir cette feuille. Idem pour les cellules "G62" et "H62 et ainsi de suite jusqu'à la fin des données.

En vous remerciant par avance pour votre précieuse aide.

Salutations,

Renaud D.

16exemple-1.xlsb (112.57 Ko)

Bonjour,

Vous avez déjà le début du code dans vos modules

Attention toute fois, les valeurs de la colonne B de votre feuille "BDDE" ont du texte, il faut donc les convertir

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim Ws As Worksheet
  If Range("G" & Target.Row) = 0 And Range("H" & Target.Row) = 0 Then
    For Each Ws In ThisWorkbook.Sheets
      If Ws.Name <> "BDDE" Then
        If Ws.Range("C8").Value = Val(Range("B" & Target.Row)) Then
          Ws.Activate
          Exit For
        End If
      End If
    Next Ws
  End If
End Sub

A+

Merci beaucoup JExceL2fr pour votre aide.

Votre code VBA fonctionne très bien.

Sincères salutations,

Renaud D.

Bonjour,

Après l'intégration de la macro dans le fichier (exemple-2.xlsb), j'ai constaté que toute la ligne est activée lorsque les cellules situées dans les colonnes "G" et "H" sont égales à "0"

Idéalement, j'aimerais que seul la colonne "B" soit activée et non la ligne au complet. Dans l'exemple ci-joint, je désire qu'il soit possible d' accéder aux feuilles en cliquant sur la cellule "B11" ou "B47" ou "B62",....

En vous remerciant par avance pour votre précieuse aide.

Salutations,

Renaud D.

6exemple-2.xlsb (95.20 Ko)

Bonsoir Renaud,

Il faut ajouter un test avant

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim Ws As Worksheet
  ' Si selection autre que dans la colonne B, on sort
  If Intersect(Target, Range("B:B")) Is Nothing Then Exit Sub
  '
  If Range("G" & Target.Row) = 0 And Range("H" & Target.Row) = 0 Then
    For Each Ws In ThisWorkbook.Sheets
      If Ws.Name <> "BDDE" Then
        If Ws.Range("C8").Value = Val(Range("B" & Target.Row)) Then
          Ws.Activate
          Exit For
        End If
      End If
    Next Ws
  End If
End Sub

A+

Merci beaucoup JExceL2fr pour la petite amélioration apportée.

Cela a résolu mon problème.

Sincères salutations,

Renaud D.

Rechercher des sujets similaires à "ouvrir feuille fonction contenu"