avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 2012
-
15 mai 2007 à 23:09
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 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
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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)
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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"...
Vous n’avez pas trouvé la réponse que vous recherchez ?
avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 20123 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........
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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.
avyrex1926
Messages postés360Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention 3 janvier 20123 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.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 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~
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 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~
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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...)