Existence d'un code/reférence dans un fichier fermé message erreur

erics83

XLDnaute Impliqué
Bonjour,

J'ai consulté et (j'espère) avoir compris comment retrouver un code ou une référence dans un fichier fermé, grâce à JB (une fois de plus...merci JB).

Mais j'ai un petit souci :

Actuellement j'entre dans une textbox un numéro d'article, (admettons "Art3"), si cet article existe dans le fichier source ("Article.xls"), la désignation s'affiche dans une listbox (car il peut y avoir plusieurs "Art3" dans mon fichier Article.xls), mais si je tape "Art5" (qui n'existe pas dans le fichier "Article.xls"), j'ai un message d'erreur....comment enlever ce message et/ou mettre vide dans ma listbox ?


En vous remerciant pour votre aide ?
 
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Existence d'un code/reférence dans un fichier fermé message erreur

Bonsoir,

Exemple:

Code:
Private Sub CommandButton1_Click()
  Dim rs As ADODB.Recordset
  Set cnn = New ADODB.Connection
  répertoire = ThisWorkbook.Path & "\"
  moncode = Me.TextBox1
  cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & répertoire & "Article.xls"
  Set rs = cnn.Execute("SELECT * FROM BD WHERE code='" & moncode & "'")
  If rs.EOF() Then
      Me.TextBox2 = " Inconnu"
   Else
      Me.TextBox2 = ""
      i = 0
      Do While Not rs.EOF
        Me.ListBox1.AddItem rs(0)
        Me.ListBox1.List(i, 1) = rs(1)
        Me.ListBox1.List(i, 2) = rs(2)
        rs.MoveNext
        i = i + 1
      Loop
   End If
   cnn.Close
   Set rs = Nothing
   Set cnn = Nothing
End Sub

JB
 

Pièces jointes

  • ADOInterro-1.xls
    51.5 KB · Affichages: 50

erics83

XLDnaute Impliqué
Re : Existence d'un code/reférence dans un fichier fermé message erreur

Merci JB,

En fait , il faut aussi que je modifie le code car il faut vider la listbox à chaque modification de la textbox1 : lorsqu'on tape "Art1", la listbox est bien alimentée(Art1 Ordinateur), mais si je tape ensuite "Art2", j'ai "Art1 écran" et "Art2" à la suite...

Je pense m'en sortir en mettant un listbox1="" au début du commandbutton_click....

Par contre, petite question technique : est-il possible de changer la couleur de la Textbox si l' Article est trouvé : exemple : je tape le N° d'Article, si trouvé, fond de textbox= vert, si pas trouvé : fond rouge (évite la textbox2). Je sais que vous avez pris cette option pour bien me montrer la logique, donc je pense que c'est dans
Code:
If rs.EOF() Then
      Me.TextBox2 = " Inconnu"
   Else
      Me.TextBox2 = ""
que cela va se situer....mais c'est une instruction que je ne connais pas....style
Code:
If rs.EOF() Then
      Me.TextBox2= backcolor (+ Numéro de la couleur)

'ou 
Me.TextBox2.backcolor = 'numéro de la couleur  '?

Merci pour votre aide
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Existence d'un code/reférence dans un fichier fermé message erreur

Bonjour,

Il faut ajouter Me.ListBox1.Clear

Code:
Private Sub CommandButton1_Click()
  Dim rs As ADODB.Recordset
  Set cnn = New ADODB.Connection
  répertoire = ThisWorkbook.Path & "\"
  moncode = Me.TextBox1
  cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & répertoire & "Article.xls"
  Set rs = cnn.Execute("SELECT * FROM BD WHERE code='" & moncode & "'")
  Me.ListBox1.Clear
  If rs.EOF() Then
      Me.TextBox2 = "Inconnu"
      Me.TextBox2.BackColor = vbRed 'RGB(255, 0, 0)
   Else
      Me.TextBox2 = ""
      Me.TextBox2.BackColor = vbWhite
      i = 0
      Do While Not rs.EOF
        Me.ListBox1.AddItem rs(0)
        Me.ListBox1.List(i, 1) = rs(1)
        Me.ListBox1.List(i, 2) = rs(2)
        rs.MoveNext
        i = i + 1
      Loop
   End If
   cnn.Close
   Set rs = Nothing
   Set cnn = Nothing
End Sub

http://boisgontierjacques.free.fr/fichiers/Formulaire/ADOInterro2.xls

JB
 
Dernière édition:

erics83

XLDnaute Impliqué
Re : Existence d'un code/reférence dans un fichier fermé message erreur

Super Merci JB,

Effectivement tout fonctionne parfaitement.....

Pour le changement de couleur, j'ai trouvé : il faut faire
Code:
Me.TextBox2 = " Inconnu"
Me.TextBox2.backcolor = 'N° Hexadécimal de la couleur

Merci pour votre aide,

A bientôt pour de prochaines aventures.....

Merci,
 

erics83

XLDnaute Impliqué
Re : Existence d'un code/reférence dans un fichier fermé message erreur

...Toujours et encore dans mes galères avec les classeurs fermés et récupération des données....

Je cherche à récupérer toutes les informations contenues dans un classeur fermé , j'ai mis Article-2 en PJ pour un exemple....

Je cherche à :

Dans mon fichier, j'ai un userform avec des Checkbox : Ecran, Souris, ordinateur, clavier.

Lorsque je clique sur une checkbox (par exemple "ordinateur"), dans une listbox, s'affiche la date et le commentaire...sous forme de liste.

Ainsi si je sélectionne ordinateur, j'aurai dans ma listbox:
Code:
04/09/15   sera pour le Bureau A
08/09/15   sera pour le bureau B
10/09/15   sera pour le bureau C
si je sélectionne souris, j'aurai dans ma listbox
Code:
06/09/15   Sera pour le bureau A

Une petite aide ?

En vous remerciant,
 

Pièces jointes

  • Article-2.xls
    20 KB · Affichages: 39

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Existence d'un code/reférence dans un fichier fermé message erreur

Voir PJ

Code:
Private Sub UserForm_Initialize()
  Dim a()
  Dim rs As ADODB.Recordset
  Set cnn = New ADODB.Connection
  répertoire = ThisWorkbook.Path & "\"
  cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & répertoire & "Article.xls"
  Set rs = cnn.Execute("SELECT DISTINCT designation FROM BD WHERE designation<>'' ORDER BY designation")
  a = Application.Transpose(rs.GetRows)
  Me.ComboBox1.List = a
End Sub

Private Sub ComboBox1_Change()
  Dim rs As ADODB.Recordset
  Set cnn = New ADODB.Connection
  répertoire = ThisWorkbook.Path & "\"
  moncode = Me.ComboBox1
  cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & répertoire & "Article.xls"
  Set rs = cnn.Execute("SELECT * FROM BD WHERE designation='" & moncode & "'")
  Me.ListBox1.Clear
  If rs.EOF() Then
      Me.TextBox2 = "Inconnu"
      Me.TextBox2.BackColor = vbRed 'RGB(255, 0, 0)
   Else
      Me.TextBox2 = ""
      Me.TextBox2.BackColor = vbWhite
      i = 0
      Do While Not rs.EOF
        Me.ListBox1.AddItem rs(0)
        Me.ListBox1.List(i, 1) = rs(1)
        Me.ListBox1.List(i, 2) = rs(2)
        rs.MoveNext
        i = i + 1
      Loop
   End If
   cnn.Close
   Set rs = Nothing
   Set cnn = Nothing
End Sub

Sans titre.gif

JB
 

Pièces jointes

  • ADOInterro2.xls
    74.5 KB · Affichages: 37
  • Article.xls
    23.5 KB · Affichages: 38
  • Article.xls
    23.5 KB · Affichages: 41
  • Sans titre.gif
    Sans titre.gif
    24.3 KB · Affichages: 34
Dernière édition:

erics83

XLDnaute Impliqué
Re : Existence d'un code/reférence dans un fichier fermé message erreur

Une fois de plus Merci BOISGONTIER,

J'ai compris la logique...déjà il faut passer par une Combobox...j'essaye avec les checkbox....

Merci,

Merci pour votre aide,
 
Dernière édition:

erics83

XLDnaute Impliqué
Re : Existence d'un code/reférence dans un fichier fermé message erreur

Merci JB,

Ci joint le fichier modifié avec les checkbox,

Par contre, je ne sais pas si c'est très "orthodoxe" : j'ai mis votre code dans chaque Click de checkbox....cela fonctionne mais suis pas certain que ce soit la meilleure écriture....

J'ai mis aussi le fichier "Article" avec un exemple (naturellement, juste un exemple), de texte à rallonge et qui ne rentre pas dans la listbox.

En vous remerciant pour votre aide,
 

Pièces jointes

  • ADOInterro3.xls
    73 KB · Affichages: 49
  • Article.xls
    23.5 KB · Affichages: 36
  • ADOInterro3.xls
    73 KB · Affichages: 44
  • Article.xls
    23.5 KB · Affichages: 38

erics83

XLDnaute Impliqué
Re : Existence d'un code/reférence dans un fichier fermé message erreur

Super merci JB,

Effectivement le code est plus clair et moins archaïque. ...merci pour m'avoir fait découvrir une nouvelle fonction, que je ne connaissais pas.

Concernant la longueur du texte, je pense résoudre le problème en faisant :
Sélection de la référence (votre code)
Affichage d’une listbox avec les dates disponibles
Après sélection d’une date, affichage dans un textbox du texte.

Un peu comme dans votre tuto ADO liste cascade.

Qu’en pensez vous?

En vous remerciant pour votre aide,
 

erics83

XLDnaute Impliqué
Re : Existence d'un code/reférence dans un fichier fermé message erreur

Bonjour,

Je n'arrive pas à afficher le texte....ni dans une ListBox, ni dans une Textbox....

Je dois faire une erreur toute simple....mais je ne vois pas où....

Code:
Private Sub OptionButton1_Click()
  cherche (Me.OptionButton1.Caption)
End Sub
Private Sub OptionButton2_Click()
  cherche (Me.OptionButton2.Caption)
End Sub
Private Sub OptionButton3_Click()
  cherche (Me.OptionButton3.Caption)
End Sub
Private Sub OptionButton4_Click()
  cherche (Me.OptionButton4.Caption)
End Sub
Sub cherche(moncode)
Dim rs As ADODB.Recordset
  Set cnn = New ADODB.Connection
  répertoire = ThisWorkbook.Path & "\"
  cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & répertoire & "Article.xls"
  Set rs = cnn.Execute("SELECT * FROM BD WHERE designation='" & moncode & "'")
  Me.ListBox1.Clear
  If rs.EOF() Then
      Me.TextBox2 = "Inconnu"
      Me.TextBox2.BackColor = vbRed 'RGB(255, 0, 0)
   Else
      Me.TextBox2 = ""
      Me.TextBox2.BackColor = vbWhite
      i = 0
      Do While Not rs.EOF
       Me.ListBox1.AddItem rs(1)
       'Me.ListBox1.List(i, 1) = rs(1)
        'Me.ListBox1.List(i, 2) = rs(2)
        'Me.TextBox3 = rs(2)
        rs.MoveNext
        i = i + 1
      Loop
   End If
   cnn.Close
   Set rs = Nothing
   Set cnn = Nothing

End Sub

Private Sub Listbox1_Click()
 Me.TextBox3 = ""
 Me.ListBox2.Clear
 
Dim rs As ADODB.Recordset
  Set cnn = New ADODB.Connection
  répertoire = ThisWorkbook.Path & "\"
  cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & répertoire & "Article.xls"
  Set rs = cnn.Execute("SELECT * FROM BD WHERE designation='" & ListBox1.Value & "'")

Do While Not rs.EOF
       Me.TextBox3 = rs(2)
       
        rs.MoveNext
        i = i + 1
      Loop
      i = 0
Do While Not rs.EOF
       Me.ListBox2.List(i, 2) = rs(2)
  rs.MoveNext
        i = i + 1
      Loop
    
  

End Sub

Merci de votre aide,
 

Pièces jointes

  • ADOInterro4.xls
    83 KB · Affichages: 40
  • ADOInterro4.xls
    83 KB · Affichages: 36
Dernière édition:

erics83

XLDnaute Impliqué
Re : Existence d'un code/reférence dans un fichier fermé message erreur

Bonjour,

Je pense avoir compris d'où vient l'erreur : dans la liaison/analyse des tables....

En effet, il faut cherche la valeur qui est à la fois
"désignation" = mon Optionbutton (=valeur moncode)
ET
"datereception" = ma Listbox1 (= la valeur que j'ai sélectionné)

J'ai donc essayé :

Code:
Set rs = cnn.Execute("SELECT * FROM BD WHERE designation='" & moncode & "'" AND Datereception ='" & Listbox1.value"')
Mais cela ne fonctionne pas...

Une petite aide ?

En vous remerciant,
 

erics83

XLDnaute Impliqué
Re : Existence d'un code/reférence dans un fichier fermé message erreur

SUPER MERCI JB,

J'ai compris d'où venait mon erreur...grâce à votre code....

Je vais ouvrir un nouveau post, car je souhaite savoir comment ajouter, modifier et ou supprimer les infos sélectionnées...

Merci pour votre aide très très précieuse et éducative,

Merci et à bientôt pour de prochaines aventures....
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 337
Messages
2 087 391
Membres
103 536
dernier inscrit
komivi