BiGOuF
Messages postés90Date d'inscriptionvendredi 13 décembre 2002StatutMembreDernière intervention12 décembre 2007
-
11 déc. 2007 à 09:49
MATHOD
Messages postés20Date d'inscriptionmardi 28 septembre 2004StatutMembreDernière intervention22 mai 2008
-
12 déc. 2007 à 13:41
Bonjour à tous, et d’avance bonnes fêtes de fin d’année
J
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
Je voudrai vous faire part d’un petit truc auquel je ne trouve toujours pas de solution.
Je souhaiterai copier dans des textox (dans excel) un texte.
Par exemple, ce texte pourrait être dans la première txt :
Arbre à pommes ( 5 cageots )
Pommes juteuses
Prix : 1 ?uro
Arbe à citrons ( 2 cageots )
Citrons acides
Prix : 2 ?uro
...
Dans la deuxième :
Entrepot ( Niveau 2 )
Permet de stocker les différentes marchandises.
Utilise 50m²
Prix : 500 ?uro 50 Centimes
Administration
Gère les différents contacts
Utilise 20m²
Prix : 1000 ?uro
...
Dans la troisème :
Camion 20
Camionnettes 25 jaune
...
Dans la quatrième :
Générateur ( 8 batteries, 12 disponibles)
Permet la production d’electricité de l’exploitation
Prix : 100?uro
Arbre ( 8 arbres, 2 disponibles )
Sert à la fabrication de fruits.
Prend une place dans l’exploitation
Prix : 50 ?uro
…
Bref, les textbox comporterait ce genre d’information (et je précise que ce n’est qu’un exemple :p).
Je souhaiterai donc, en appuyant sur un bouton, qu’une analyse soit faite dans chaque textbox, et mette dans la Range(« B3 ») la valeur 5 (c-a-d le nombre de pommes), dans le Range (« C3 ») la valeur 2 (niveau de l’entrepot), Range(« D3 ») la valeur 8 (le nombre de batterie).
Il s’agit ici d’un exemple regroupé. C’est-à-dire que dans une textbox, tout sera sous la même forme :
NOM_PRODUIT ( NOMBRE cageots )
DESCRIPTION
PRIX
Dans une autre Textbox :
BÂTIMENT ( Niveau NIVEAU )
DESCRIPTION
PRIX
Et dans la dernière :
( NOMBRE NOMBRE disponible ).
DESCRIPTION
PRIX
Mon problème vient essentiellement du fait que je n'arrive pas à faire une requête du genre "SI "Arbre à pomme" appartient à la ligne ALORS Range("B3") = 5ème mot de la phrase"
J'espère que vous comprenez clairement ce que je veux dire. En réalité, la description et le prix m'importent peu, je souhaite simplement que s'il reconnait tel ou tel début de phrase, il aille chercher la valeur du mot placé en telle position (position variant d'une textbox à l'autre).
Je suis à votre entière disposition pour de plus amples information, et je vous remercie d'avance pour l'aide qui me sera apportée :)
MATHOD
Messages postés20Date d'inscriptionmardi 28 septembre 2004StatutMembreDernière intervention22 mai 2008 12 déc. 2007 à 09:01
ah bien, on voit mieux la difficulté...
mais tes texbox non pas de 'structure' unique...
par exemple 8 batteries, 12 disponibles
tu as deux 'chiffres' différents ?!, à part l'ananlyse des 'mots' clés que tu dois connaitre avant, du genre 'ne pas prendre 'disponibles', mais batteries ...
ta structure complique l'analyse:
à mon avis, donne un codage plus systématique à ta structure (sauf si tu récupères çà d'une autre source , mais alors analyse directement cette source (plage de données plus facile à analyser que le contenu d'un textbox)...
mais, ...de base il te faut utiliser des fonctions comme cherche un caractère particulier comme la parenthèse, qui pourrait être ton élément 'structurant':
derrière une parenthèse: toujours le nombre, sans espaces...
ce serait un moyen plus simple de résoudre ton problème...
sinon comment déterminer où commence et ou fini ta donnée 'utile', puisque tu peux avoir deux nombres sur la meme ligne...
bref,
penses tu pouvoir systématiser un code de saisie de ce nombre 'utile' ?
xxxxx(nombre) on sait qu'on ira chercher entre deux parenthèses, etc...
car, à ce moment là, on peut mieux chercher l'élément clé...
ben, je connais pas très bien le codage VB, mais la programmation oui...
et tout ton problème est 'en amont' de ta question...
bon courage !
Vous n’avez pas trouvé la réponse que vous recherchez ?
BiGOuF
Messages postés90Date d'inscriptionvendredi 13 décembre 2002StatutMembreDernière intervention12 décembre 2007 12 déc. 2007 à 12:47
Et bien dans la première textbox, je chercherai par exemple le terme "Arbre à pommes (", et je prendrai le mot suivant, de même pour "Arbre à citrons (".
Pour la 2ème, je chercherai tout ce qui se trouve en avant dernière position dans la phrase si "Entrepot" se trouve dans la phrase, même chose pour administration (où j'ai oublié de mettre "( Niveau 1 )" sur le printscreen, désolé :) .
Pour la 3eme, je prendrai le 2eme mot, en faisant toujours une recherche sur le premier mot.
Et concernant la 4eme texbox, je ferrai une recherche sur "generateur (", en prenant le mot qui suit.
Mon problème majeur est de savoir traduire la query qui veut dire "SI "Générateur (" est dans la ligne ALORS Range(XX) = [3ème_mot]"
MATHOD
Messages postés20Date d'inscriptionmardi 28 septembre 2004StatutMembreDernière intervention22 mai 2008 12 déc. 2007 à 13:41
je peut te donner en macro Excel VB, l'idée du code qui va bien,
si ton texte est dans une cellule (ce que tu peux toujours faire dans une feuille annexe...mettre les lignes de tes texbox en lignes, colonnes)...
Sub chercheUneChaine()
'
' chercheUneChaine Macro
' Macro enregistrée le 12/12/2007 par 1084417
'
' en B16 : met 'arbres (42)' par exemple
' chercher le (
Range("B17").Select
ActiveCell.FormulaR1C1 = "=SEARCH(""("",R[-1]C,1)"
' chercher le ) à partir de la position précédente trouvée
Range("B18").Select
ActiveCell.FormulaR1C1 = "=SEARCH("")"",R[-2]C,R[-1]C)"
' extraction du nombre entre ces deux parenthèses
Range("B19").Select
ActiveCell.FormulaR1C1 = "=MID(R[-3]C,R[-2]C+1,R[-1]C-R[-2]C-1)"
Range("B20").Select
ActiveCell.FormulaR1C1 = "fin"
Range("B21").Select
End Sub
je ne connais pas bien le VB 'pur', mais je me débrouille toujours avec Excel...alors...je passe souvent par çà pour décortiquer (par étapes) ce que je veux faire...
a+