Rechercher une valeur dans un tableau Excel

Lew508 Messages postés 7 Statut Membre -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je travaille sur la mise en place d'un interface d'aide au pilotage des référence, je ne suis pas pro de VBA, mais j'ai quand même essayé de faire quelque chose sauf que mon code n'est pas bon d'ou ma sollicitation d'aide.

J'ai des référence par ordre croissante dans un tableau excel sur la cellule A, et juste à coté sur la cellule B j'ai attribué des états à ces références. Pilotable = 1 et Non Pilotable = 0.

- J'aimerais que lorsque l’opérateur saisie une référence qui à un état = 1 sur mon formulaire de saisie et appuis sur la touche Entrer, il reçoit un message lui disant : "Référence Pilotable! Attention la moyenne des poids doit être supérieure ou égale au -poids nominal".

- Lorsque l'état de la référence saisie est = 0, il reçoit un message disant: "Référence Non Pilotable"

- Lorsque la référence saisie n'est pas dans mon tableau, il reçoit un message: "Référence non existante dans l'historique"

Pourriez-vous m'aider pour le code VBA svp?

Ci-desous le code que j'ai écrit qui ne fonctionne pas.

Private Sub CommandButton1_Click()
Dim ligne As Integer
For ligne = 2 To 68
If Cells("B2:B68") = 1 Then TextBox "Reference Pilotable"
If Cells("B2:B68") = 0 Then TextBox "Reference Non Pilotable"

End If

End Sub

Merci d'avance.

2 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Il faut faire une recherche de la reference saisie dans la colonne A et tester la valeur de la cellule B, si n'existe pas message "Référence non existante dans l'historique". Si la ref existe, affichage des messages suivant status 1 ou 0
    0
    1. Lew508 Messages postés 7 Statut Membre
       
      c'est justement ce que je n'arrive pas à faire, mon code n'est pas exact apparemment
      0
  2. archer
     
    Bonjour
    Voila une modife
    A toi de voir
    Private Sub CommandButton1_Click()
    Dim ligne As Long
    For ligne = 2 To 68
    If Cells("B" & ligne) = 1 Then TextBox = "Reference Pilotable"
    If Cells("B" & ligne) = 0 Then TextBox = "Reference Non Pilotable"
    Next
    End Sub

    A+
    Maurice
    0
    1. Lew508 Messages postés 7 Statut Membre
       
      Bonjour Maurice,

      Déjà merci pour l'intérêt accordée à mon problème.

      Ceci dit, j'ai recopié le code que tu as proposé, mais ça ne marche toujours pas.

      lorsque je rentre la référence et j'exécute le bouton un message s'affiche : "erreur d’exécution 55" , ensuite en dessous du message j'ai: "Argument ou appel de procédure incorrect".

      j'ai même essayé de le modifier comme suit:

      Private Sub CommandButton1_Click()

      Dim ligne As Long

      For ligne = 2 To 68

      If Cells("B2:B68" & ligne) = 1 Then TextBox = "Reference Pilotable"

      If Cells("B2:B68" & ligne) = 0 Then TextBox = "Reference Non Pilotable"
      Next

      End Sub

      mais sans succès.
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour a vous deux
      Lew508
      j'ai recopié le code que tu as proposé
      Pas exactement, relisez attentivement ce que archer a ecrit
      Vous devriez aussi relire ce que j'ai ecrit car il manque une recherche dans votre code
      0
    3. Lew508 Messages postés 7 Statut Membre > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
       
      Oui j'ai bien lu ce que tu as écrit, et j'ai répondu en disant que je bloque à ce niveau, d'où ma demande d'aide.
      j'aurais bien voulu joindre la feuille sur laquelle je travaille pour que vous puissiez voir.
      pour faire simple je fais une petite illustration ci-dessous.

      Nom de la feuille: Refs

      Colonne A Colonne B

      Références Etats

      4001 1
      4002 0
      4003 1
      4004 0
      4005 1
      4006 1
      ......... ..........
      ........ .........
      ........ .........

      - Lorsque j'écris mon code comme ceci pour comparer, ça ne fonctionne pas:

      Private Sub CommandButton1_Click()
      Dim a As Variant
      Dim b As Variant

      Dim table As Range
      Set table = Range(Worksheets("refs").Cells("A2,A68"), Worksheets("refs").Cells("B2, B68"))
      a = 1
      b = 0
      For Each cell In table
      If Abs(cell.Value) = a Then MsgBox ("Reference Pilotable Attention moyenne des poids doit être supérieur ou égale au poids nominal")
      If Abs(cell.Value) = b Then MsgBox ("Reference Non Pilotable")
      Next
      End Sub
      0
    4. Lew508 Messages postés 7 Statut Membre
       
      Je viens de modifier quelque petits trucs, mais lorsque j’exécute, quelque soit l'état 1 ou 0, j'ai le message Ref Non Pilotable qui s'affiche.

      Private Sub CommandButton1_Click()
      Dim a As Variant
      Dim b As Variant
      Dim table As Range
      Set table = Range(Worksheets("Refs Pilotables").Cells(2, 68), Worksheets("Refs Pilotables").Cells(2, 68))
      a = 1
      b = 0
      For Each cell In table
      If Abs(cell.Value) = a Then MsgBox ("Reference Pilotable Attention moyenne des poids doit être supérieur ou égale au poids nominal")
      If Abs(cell.Value) = b Then MsgBox ("Reference Non Pilotable")

      Next
      End Sub
      0
    5. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,
      Si vous saisissez une seule reference, pourquoi faire une boucle sur la colonne B alors que si vous faites une recherche de cette reference vous aurez la ligne et vous recupererez la cellule colonne B de cette ligne.
      Dans vote code il n'y a aucune rcherche de reference, pige pas votre facon de voir!!!!!!!!!!!!!!!!!!!!!
      0