Liste déroulante <> des cellules

Sub bande()
'macro qui permet d'afficher les bandes de production

Dim reference As String
Dim ope As Integer
Dim poste As String

'déclaration des 3 variable des bandes de production
Dim k As Integer
Dim l As Integer
Dim m As Integer
Dim n As Integer

Sheets("Synthèse").Select
reference = Cells(2, 2).Value
  poste = Cells(3, 2).Value
ope = Cells(4, 2).Value

Sheets("BdD").Select

For k = 7 To 31 Step 6

'ici k <> reference alors que les référence que k parcourt une liste qui ma servit à faire ma liste déroulante
' dans l'onglet synthèse cells(2, 2)
'or il me dit que k nest jamais égal a référence  need help

If Cells(2, k) = reference Then
MsgBox ok
Exit For
End If
Next k
Sheets("Synthèse").Select
End Sub

Bonjour,

Pouvez-vous joindre votre fichier excel ?

merci! ne nous aider à vous aider

Bonsoir,

'or il me dit que k nest jamais égal a référence need help

Ça tombe sous le sens ! reference est du texte, k est un nombre passant par les valeurs 7, 13, 19, 25, 31 !

Si égalité entre reference et l'une des cellule : G2, M2, S2, Y2, AE2, tu auras un message blanc qui s'affiche !

blanc parce que ok est une variable non déclarée, non initialisée qui est donc vide, et n'affichera donc rien !

Si on ne retrouve pas de valeur alors qu'apparemment il y en a une, il faut voir s'il n'y a pas de différence orthographique, si la casse est identique, et si pas d'espaces parasites...

Cordialement.

Bonjour naubin, le forum,

J'ai réécrit ainsi ton code VBA :

Option Explicit

Sub bande()
  'affiche les bandes de production
  Dim reference$, poste$, ope%, chn$, k%: Worksheets("Synthèse").Select
  With [B2]
    reference = .Value: poste = .Offset(1): ope = .Offset(2)
  End With
  For k = 7 To 31 Step 6
    With Worksheets("BdD").Cells(2, k)
      If .Value = reference Then
        chn = "référence : " & .Value & vbLf & "poste : " & .Offset(1) _
          & vbLf & "ope : " & .Offset(2)
        MsgBox chn: Exit For
      End If
    End With
  Next k
End Sub

mais note que les 2 variables poste et ope ne sont pas utilisées ! je les ai laissées seulement si ton code est incomplet et que tu veux ajouter du code VBA qui les utilise ; sinon, utilise plutôt cet autre code VBA :

Option Explicit

Sub bande()
  'affiche les bandes de production
  Dim reference$, chn$, k%: Worksheets("Synthèse").Select: reference = [B2]
  For k = 7 To 31 Step 6
    With Worksheets("BdD").Cells(2, k)
      If .Value = reference Then
        chn = "référence : " & .Value & vbLf & "poste : " & .Offset(1) _
          & vbLf & "ope : " & .Offset(2)
        MsgBox chn: Exit For
      End If
    End With
  Next k
End Sub

Dans les 2 cas : la feuille "BdD" n'a pas été sélectionnée ➯ on est resté sur la feuille "Synthèse" sélectionnée au début ; la suite dépend des données qui sont sur tes 2 feuilles, et aussi du travail que tu veux faire.

Si ton problème est réglé, merci de passer ce sujet en résolu ; sinon : tu devrais joindre ton fichier (sans données confidentielles), et avec plus d'infos sur le travail à faire.

dhany

Bonjour et merci

je regarde tous ce que vous m'avez dit et je vous dit si cela fonctionne,

oui le code n'est pas fini mais j'avais anticipé la déclaration de variable.

Cordialement

problème résolu je vous remercie de vos informations

Rechercher des sujets similaires à "liste deroulante"