XL 2010 fonction vlookup réticente ? (vba) [RESOLU]

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
Voilà j'ai dû rétrécir un max mon appli énorme ( chaque fichier comportait 200 onglets) et j'ai donc refait 2 fichiers avec le minimum
J'ai fait ça il y a 2 ans pour une amie qui gère une Ludothèque et qui font une "Bourse" chaque année .... là 3eme 'Bourse' et encore des bugs
Mais celui ci est vraiment bizarre ??? j'y ai déjà passé pas mal de temps mais 'creux' je ne vois pas pourquoi ? , j'explique le fonctionnement
Les onglets vendeurs sont du copier/coller de fichiers xlxs individuels reçu en inscription à cette Bourse , ensuite tout est rempli auto par des recopies via formules basiques
Le jour de la "Bourse" les gens prennent les jeux et passent en caisse , là le logiciel agit >

- Vous ouvrez le fichier ACHATEURS > VENDEURS va s'ouvrir auto. ( faut le même répertoire )
- Un USF se lance ( et se relance à chaque 'Activate" de l'onglet 'Toutes Les Listes')
Pour les essais : juste entrer le N° acheteur ... il n'y en a qu'un !! ici > choisir un code Jeu dans la liste ou taper CEUX qui fonctionnent sont de 1 à 20
Les box se remplissent bien
Si vous entrez un jeu en code 17xx > Erreur en ligne textbox6 comme ci dessous
VB:
Private Sub CodeJ_AfterUpdate()


Call vendu ' Vérifier si saisie manuelle du code le jeu n'est  pas déjà Vendu

If CodeJ = "" Then Exit Sub

TextBox6.Value = Application.WorksheetFunction.VLookup(CDbl(CodeJ), Sheets("TOUTES LES LISTES").Range("B4:D2005"), 2, 0) ' Recherche du Code et affecte le libellé

Cout = Format(Application.WorksheetFunction.VLookup(CDbl(CodeJ), Sheets("TOUTES LES LISTES").Range("B4:D2005"), 3, 0), "#,##0.00")
If Cout = "" Then MsgBox "Prix non renseigné ": Exit Sub
Prix = Cout

If TextBox6 = "Jeu Inexistant" Or JDV = 1 Then CodeJ = "": Exit Sub
Total = Total + CDbl(Prix)
Tfac = Format(Total, "#,##0.00")
End Sub
Si Essai réussi VALIDER , pour recommencer > EFFACER le code Jeu dans la fiche acheteur 1 car normalement on passe au suivant
Pour moi ce n'est pas un BUG !! mais un ALEA puisque tout le reste fonctionne sauf avec les jeux de la liste de 1700 ? il n'y a que cette fiche qui merdoie ???
dès le code jeu entré > ERREUR
Là je pige pas ce que c'est ??? je ne sais pas interpréter cette erreur
Merci bien de votre aide pour une explication
 

Pièces jointes

  • forumAV.zip
    245.6 KB · Affichages: 13
Dernière édition:

job75

XLDnaute Barbatruc
Dans le fichier vendeurs feuille "1761 - 1780" revalidez les textes 1761 à 1780.

Pour qu'ils deviennent des nombres.
C'est cette feuille qu'il faut traiter et pas une autre.

Il existe plusieurs manières de convertir des textes en nombres :

- la revalidation des cellules

- la méthode indiquée par Cousinhub

- la commande "Convertir"

- le Copier-Collage spécial-Valeurs d'une cellule vide avec l'opération "Ajouter"

- la commande "Remplacer" (touches Ctrl+H) => Rechercher : 1 Remplacer par : 1 si comme ici il y a un 1 dans tous les textes.
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
Bon la seule solution qui a fonctionné c'est avec la sub CTD de Toofatboy
J'ai repris mon enquête et le résultat est que cette fiche a été ajouté manuellement à la fin dans le fichiers Vendeurs
et donc n'est pas passée dans ma moulinette > Il y a un dossier à part avec toutes les fiches que je converti et qui se calent ensuite dans le gros fichier , donc elle l'a fait tourner pour la totalité sauf 1 !!!!!!!!
VB:
With Worksheets("FICHE DINSCRIPTION À REMPLIR")
   
        For k = 10 To 29   Liste des codes
        .Cells(k, 2).Value = CDbl(.Cells(k, 2))
         Next k
Donc l'erreur ne se reproduira plus l'an prochain , j'ai averti ma copine sur le sujet
Par contre j'ai repris le dossier qu'elle m'avait retourné après leur manif. ; Il faudra m'expliquer comment vous faites pour voir que c'est du texte ???? je vous ai dit que pour moi Excel c'est du basique
Si j'avais vu Texte ... je n'aurai pas créé de sujet ici !!!!
Merci de toute votre aide !!
 

Pièces jointes

  • format.jpg
    format.jpg
    33.1 KB · Affichages: 4

TooFatBoy

XLDnaute Barbatruc
Il faudra m'expliquer comment vous faites pour voir que c'est du texte ????
Je te l'ai dit en #13 et en #18 ;) :
Il te suffit de mettre les cellules de la feuille en alignement standard et tu vois tout de suite si c'est du texte (alignement à gauche) ou un nombre (alignement à droite).

Tu peux faire un test :
  • tu prends le fichier d'origine avec les 17xx en texte,​
  • tu mets l'alignement des cellules de la feuille en "Standard",​
  • tu constates que les 17xx sont alignés à gauche, donc c'est du texte,​
  • tu exécutes la macro CTD,​
  • tu constates que les 17xx sont maintenant alignés à droite, donc c'est devenu des nombres.​

Pour rappel, la macro CTD :
VB:
Sub CTD()
'
    With Sheets("1761 - 1780").Range("B10:B29")
       .Value = .Value
    End With

End Sub



Ce que montre ta capture d'écran c'est le format d'affichage du contenu de la cellule.
Comme je disais en #20, il ne faut pas confondre le type de données du contenu de la cellule, et le format d'affichage du contenu de la cellule. ;)

Je crois que l'exemple le plus parlant est pour les dates et les heures.
Exemple : le format d'affichage permet d'afficher 11/12/2023 alors que la cellule contient le nombre 45271.

Autre test :
  • dans la feuille "TOUTES LES LISTES" du classeur BOURSE AUX JEUX - vendeurs.xlsm, tu sélectionnes les cellules B5 à B44,
  • tu vas dans "Format de cellule" et tu choisis "Nombre" avec deux chiffres après la virgule,
  • tu vois que les 17xx n'ont pas les deux chiffres après la virgule, contrairement aux autres cellules sélectionnées qui ont bien deux chiffres après la virgule.
Les cellules qui ont les deux chiffres après la virgule contiennent des nombres.
Les cellules qui n'ont pas les deux chiffres après la virgule contiennent du texte.
 
Dernière édition:

Statistiques des forums

Discussions
312 209
Messages
2 086 274
Membres
103 168
dernier inscrit
isidore33