Problème de msgbox + prob de conversion

daviddubois Messages postés 92 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 janvier 2012 - 26 juin 2006 à 09:51
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 27 juin 2006 à 01:15
Bonjour le forum,

J'utlise un dataset qui me permet de transférer toutes mes données vers Excel.

J'aurai aimé comparer un champs de mon dataset avec une cellule Excel, si c'est la même, c'est OK, il fait ce que je lui demande autrement il m'envoi un message box.

Voici ce que j'ai écris comme code :

Dim i As Byte
i = "11"
Dim j As Byte
'j = au nombre d'enregistrement dans le dataset !
For j = 0 To dts.Tables("BA2_S1").Rows.Count - 1
If appexcel.Cells(i, "2") Is dtt.Rows.Item("Nomcomplet") Then ...instructions.....
Else
MessageBox.Show(erreurnom)
End If

Je demande donc que si la cellule B11 est = au contenu du champs "Nomcomplet" de mon dataset, qu'il exécute les instructions.

Il y'a deux problèmes.

Le premier est que le messagebox apparaît à chaque fois !

Dès le clic sur le bouton, même avant d'arriver sur le if, il se lance.

Je l'ai déclaré de cette façon :

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
Dim erreurnom = MessageBox.Show("Il y'a une différrence de nom entre la base de données et la feuille Excel"
<!-- END TEMPLATE: bbcode_code -->
En VBA, c'est comme ça que je le déclarais, ça doit être différent en VB.NET car pour moi le premier problème est dû à la déclaration de cette variable car quand je le met en commentaire, les messagebox n'apparaît pas.

Le second problème est ce message d'erreur :

<!-- BEGIN TEMPLATE: bbcode_quote -->

 
"Cast de la châine "Nomcomplet" en nom integer non valide"

<!-- END TEMPLATE: bbcode_quote -->
Là, je présûme que c'est un problème de conversion ??

J'ai essayé de changer mon Dim i as byte en Dim i as integer mais rien n'y change.

Je vous remercie d'avance pour votre aide.

DD

3 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
26 juin 2006 à 11:36
Salut,

je te conseille Dim j As Long

Un moment tu as mis :
If appexcel.Cells(i, "2") Is dtt.Rows.Item("Nomcomplet") Then...instructions.....

                                    ^ ici, c'est pas "2" qu'il faut mettre met 2 sans guillemets !

Après je peux pas t'aider plus car je ne fais pas de .net, désolé

Bonne continuation

















@++
0
daviddubois Messages postés 92 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 janvier 2012
26 juin 2006 à 12:19
Salut Mortalino,

Malheureusement le problème ne vient pas du 2, je viens de tester.

J'aimerais simplement comparer la valeur de la ligne active du dataset avec une cellule excel, si c'est le même ok on fait les instructions autrement au va au else.

Merci encore pour ton aide.

DD
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
27 juin 2006 à 01:15
salut,
première fois ou presque que je lis complètement un Topic DotNet

1. dotnet // excel? explique-moi, déjà là je bloque (pour moi excel = VBA, mais je ne connais aucun des 2 , remarque je n'en dors pas plus mal )

2.
Dim i As Byte
i = "11"

byte = string? beh je vais vraiment rester sous VB6 .....

3.
dts.Tables("BA2_S1").Rows.Count - 1

peut-être nous dire ce que "BA2_S1" veut dire.... parce que si c'est une variable (ce qui paraît évident), les quotes sont de trop.

4.
même remarque que Mortalino (que je salue au passage)

5.
If appexcel.Cells(i, "2")
Is dtt.Rows.Item("Nomcomplet")


cells retourne un entier? une chaine? il ne manque pas un .text ou .value? le is ne devrait pas être remplacé par = ?
pures suppositions...

6.
bah après ton "explication", j'ai pas envie de chercher à la comprendre (on est pas toujours tous courageux ^^)

++
PCPT  [AFCK]
0
Rejoignez-nous