Entrer de donnée selon critères

Résolu
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 - 15 mai 2007 à 23:09
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 18 mai 2007 à 11:50
Bonjour,

Je vous explique encore mon problème.

Une fois avoir ouvert mon Form VB6, le text1 = Range ("A1").

Dans mon Form, il y a plusieur "Text" 1 à 121

Text1 = A1 de la célule du fichier excel ( Numéro de commande), qui est dans 20 lignes un en dessous de lautre dans la colone B
Text2 = le numéro de la ligne relié au numéro de commande dans la colone J de 1 à 20.
Text3 à 121 = qté, description prix etc.

Si on regarde la première partie qui sont assignés au text3 à Text7

Maintenant je veux  qu'il m'inscrive la valeur du Text3 dans la colone K si le numéro de commande = Text1 et aussi Text2
Ensuite Text4 dans la colone L si le numéro de commande = Text1 et aussi Text2
Ensuite Text5 dans la colone M si le numéro de commande = Text1 et aussi Text2
Ensuite Text6 dans la colone N si le numéro de commande = Text1 et aussi Text2
Ensuite Text7 dans la colone O si le numéro de commande = Text1 et aussi Text2  .................................................

Je pensais que se script fonctionnerais mais pas du tous. Car si la valeur du Text1 est 00001, il me marque la valeur du text3 dans la celule "K11"
Range(("k") & (Text1) & Text2) = Text3

que dois-je modifié à mon script svp

Merci encore! 

14 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
17 mai 2007 à 02:58
Dim Recherche as range, Ligne as long
'colonne B = numéro de commande
    Set Recherche = Columns("B:B").Find(Text1.Text)
    If not recherche is nothing then
       Ligne = recherche.row
       range("K" & Ligne) = text3
       range("L" & Ligne) = text4

       ....

MPi
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
16 mai 2007 à 08:07
Salut,
je suis désolé mais je ne comprends pas (entre autre): "le numéro de commande = Text1 et aussi Text2"

@+: Ju£i?n
Pensez: Réponse acceptée
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
16 mai 2007 à 08:23
Text1 = A1 de la célule du fichier excel ( Numéro de commande ), qui est dans 20 lignes un en dessous de lautre dans la colone B
J'en déduis que Text1 contient une donnée... (et je vois plus loin qu'elle est par exemple "00001"


Text2 contient un numéro de ligne, dis-tu ... (Suposons donc "1")


quid alors de :




Range(("k") & (Text1) & Text2) = Text3



(qui donnerait : Range(K000011)


sans préjudice de ce que (je ne connais pas Excel) les guillements autour de K doivent ou non être utilisés (je n'en sais rigoureusement rien)
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
16 mai 2007 à 08:34
Je n'aime de toutes façons pas qu'on se limite à Text1, Text2 et Text3 pour se référer à ce que contiennent ces contrôles.
Par défaut, ce sera des chaînes de caractères...
Pour Text3, c'est sur, La chaine de caractères doit être utilisée, mais alors : précise le explicitement (text3.text ou text3.value selon la syntaxe admise par VBA que je ne connais pas)
Pour Text1 et Text2, il va te falloir utiliser Val(Textx.text/(ou value)) si tu ne veux par la chaine de type "0000y"...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
16 mai 2007 à 13:54
j'explique en détail,

Dans monfichier excel,

Celule A1 = 00003
Ligne 3      ColoneB Colone C......      Colone K Colone L     Colone M     Colone N........
              PB                 00001                                  1
              PB                 00001                                  2
              PB                 00002                                  1
              PB                 00003                                  1
              PB                 00003                                  2

Maintenant, dans mon Form, Dans le Text1 = il y a la même valeur que dans la celule A1 comme dans ce cas 00003
Et dans le Text2 = il y a le numéro de la ligne exemple 1

Donc je voudrais que la valeur du Text3, Text4, Text5, Text6 et Text7 se place dans les colone K à O selon le numéro de la colone B et le luméro de de colone J.

Je précise que les données des text4 à 7 sont relié toujour avec le numéro de la celule A1.

Donc le résultat de l'explication plus haut, devrait donner quelque chose comme sa: Text1 00003(rendu au numéro de commande 00003)  et    text2 1(pour le numéro de la ligne)
<hr size ="2" width="100%" />Celule A1 = 00003
Ligne 3      ColoneBColone C......      Colone K Colone L     Colone M     Colone N........

              PB                 00001                                  1

              PB                 00001                                  2

              PB                 00002                                  1

              PB                 00003                                  1                25                  Pinceau       5.99$            5.99$

              PB                 00003                                  2
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
16 mai 2007 à 14:14
Salut,
En utilisant la méthode Find (et FindNext) de l'objet Range tu devrais pouvoir faire ce que tu souhaites.
Ensuite plus qu'a affecter au cellule le cintenu des textbox.

@+: Ju£i?n
Pensez: Réponse acceptée
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
16 mai 2007 à 16:18
Ok,

J'ai fais :
<hr size="2" width="100%" />Dim Recherche
Dim Recherche1
  
'colonne B = numéro de commande
    Set Recherche = Columns("B:B").Find(Text1.Text)
'Colonne J = Numéro de ligne du numéro de commande
    Set Recherche1 = Columns("J:J").Find(Text2.Text + 1)
    If Not Recherche Is Nothing Then
MsgBox Recherche.Address
      Else
 
    End If
<hr size="2" width="100%" />qui me place dans la bonne celule. Maintenant, comment envoyer la donné du Text3 dans cette celule.
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
16 mai 2007 à 17:04
Et non, le script que j'ai écrit ne fonctionne pas du tous.

Je continu mes recherche.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
17 mai 2007 à 04:57
Cher Avyrex,

je ne comprendrai donc jamais si tu es en VB6 ou en VBA ! 
Tes codes sont vraiment (très) bizarres (du moins de mon point de vu).

Tu as bien des objets de VB6 (Form, et pas UserForm ; Text et pas TextBox), dès fois tu références des classeurs et l'appli Excel, et pourtant tu utilises Range + des fonctions d'Excel, sans les précéder de l'objet classeur.

Pour enfin en avoir le coeur net, dans l'éditeur VB, tu as des menus, don un point d'interrogation. Dedans tu as à propos de Visual Basic...
Clique dessus, et dit moi ce que tu vois :
Visual Basic 6.3    [donc VBA]
ou
Visual Basic 6.0 (SP6)    [donc VB6]

Voilà, comme ça ce sera plus facile de t'aiguiller 

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
17 mai 2007 à 14:19
Bonjour mortalino,

Il est écrit:
<hr size="2" width="100%" />Microsoft Visual Basic 6.0
Pour les développement Windows 32 bits
<hr size="2" width="100%" />

Merci MPI, ça fonctionne bien. 
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
17 mai 2007 à 14:19
Bonjour mortalino,

Il est écrit:
<hr size="2" width="100%" />Microsoft Visual Basic 6.0
Pour les développement Windows 32 bits
<hr size="2" width="100%" />

Merci MPI, ça fonctionne bien. 
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
17 mai 2007 à 14:31
Oups ça écrit en double

mortalino, je crois que je vais recommencer une partie de mon projet pour rester en vb6.

Je vais prendre un peux de recule le temps de lire un peux sur le sujet et une fois un peux plus connaisseur, je reviendrais.

Merci de votre aides même si parfoit vous m'avez trouvé bizzard avec mes mélanges de scripts, VBA / VB6.

Sans rancune les amis. 

Merci encore!
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
18 mai 2007 à 02:12
Ok, donc ça me rassure de voir que tu es bien en VB6.
Lire sur le sujet, oui, c'est une bonne idée. Cependant, que ça ne t'empêche pas de faire des tests en même temps, et si on peut t'aider on le fera.

En fait, quand je disais que c'est bizarre, tes codes, c'est que là je suis sûr que tu es en VB6, mais j'avais le doûte à cause de l'utilisation de tes Range.
Tu mets Text1 = Range("A1")
Pour moi, Text1 (dans VB6) ne peut pas recevoir la valeur de la cellule A1 d'Excel, car je suis obligé de placé l'objet devant (ex : xlBook.Range("A1")) sachant que l'objet a bien été lié au classeur de ton choix (Set xlBook = ...)
Voilà pourquoi j'ai cette interrogation : comment fait-il (le code) pour fonctionner
chez toi ?

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
18 mai 2007 à 11:50
Salut Mortalino,
Je ne saurais répondre exactement pourquoi ça fonctionne chez moi aussi, mais tu as une meilleure approche en spécifiant le nom de l'objet. C'est même toujours préférable de le faire, même sous Excel (ce que je ne fais pas toujours.... et je vais m'en mordre les doigts un jour ou l'autre...)

MPi
0
Rejoignez-nous