Dr_Yce
Messages postés4Date d'inscriptionvendredi 7 octobre 2005StatutMembreDernière intervention10 octobre 2005
-
7 oct. 2005 à 14:40
drouault
Messages postés73Date d'inscriptionsamedi 9 juillet 2005StatutMembreDernière intervention14 août 2007
-
12 oct. 2005 à 17:04
salut à tous,
rentrons dans le vif du sujet
je dispose d'un tableau à double entrée (voir plusieurs entrées...), par exemple ce tableau me permet de sélectionner la puissance d'un ascenseur en fonction de sa vitesse et de sa charge. ce que je voudrais faire c'est développer un moyen, une application (une macro??) me permettant d'effectuer la sélection selon les critères que je lui aurais indiqué: je choisis la vitesse et la charge, et en retour j'obtiens la puissance correspondante.
drouault
Messages postés73Date d'inscriptionsamedi 9 juillet 2005StatutMembreDernière intervention14 août 2007 12 oct. 2005 à 17:04
Bonjour, voici le bout de code exemple promis. attention comme je l'ai marqué j'ai l'habitude de développer sous VB6 dans lequel je manipule Excel certaines synthaxes peuvent varier légérement si vous utiliser une macro dans excel (Instr notamment je suis pas sur que ça existe en macro excel ...)
Mais bon ça donne une idée du principe même si le code n'est pas forcément le meilleur qui soit :-)
A+
Pierre
Dim i As Integer 'Variable pour stocker la ligne de la cellule à afficher
Dim j As Integer 'Variable pour stocker la colonne de la cellule à afficher
Dim nbre_ligne_utiliser As Integer
Dim nbre_colonne_utiliser As Integer
Dim valeur_ligne As String
Dim valeur_ligne_compare As String
Dim valeur_ligne_compare_def As String
Dim valeur_colonne As String
Dim valeur_colonne_compare As String
Dim resultat_comparaison_ligne As Integer 'Variable test s'il y'a correspondance pour les lignes
Dim resultat_comparaison_colonne As Integer 'Variable test s'il y'a correspondance pour les colonnes
Dim resultat As String
valeur_ligne = InputBox 'Valeur de comparaison à saisir pour la ligne pour l'utilisateur
valeur_colonne = InputBox 'Valeur de comparaison à saisir pour la colonne pour l'utilisateur
'Calcul pour la boucle du nbre de ligne mini et maxi du tableau
valeur_ligne_compare = Cells(i, 1).Value 'Récupération de chaque valeur balayer pour comparaison
valeur_ligne_compare_def = InStr(1, valeur_ligne_compare, valeur_ligne, vbTextCompare) 'Comparaison de la valeur saisie et de la valeur balayée
If valeur_ligne_compare_def = 1 Then
resultat_comparaison_ligne = i 'tu recuperes le numéro de ligne pour afficher la valeur par la suite
End If
Next i
'MEME PRINCIPE POUR LA RECUPERATION DU NUMERO DE COLONNE
For j = 1 To nbre_colonne_utiliser
valeur_colonne_compare = Cells(1, j).Value 'Récupération de chaque valeur balayer pour comparaison
valeur_colonne_compare_def = InStr(1, valeur_colonne_compare, valeur_colonne, vbTextCompare) 'Comparaison de la valeur saisie et de la valeur balayée
If valeur_colonne_compare_def = 1 Then
resultat_comparaison_colonne = i 'tu recuperes le numéro de ligne pour afficher la valeur par la suite
End If
Next j
'ET ENSUITE TU AS SIMPLEMENT A RECUPERER LA VALEUR
resultat = Cells(i, j).Value
MsgBox (resultat)
'CE PRINCIPE EST VALABLE SI TU AS UNE SEULE CORRESPONDANCE POSSIBLE DE VALEUR A FAIRE
'DANS LE CAS OU DEUX RESULTAT SONT POSSIBLE A CHAQUE SORTIE DE BOUCLE IL TE FAUT STOCKER LE RESULTAT
'DANS LE FICHIER OU DANS UN TABLEAU
'JE DEVELOPPE SOUS EXCEL A PARTIR DE VB6, CERTAINE SYNTHAXE SONT PEUT ETRE PAS JUSTE SI TU CREE EN VBA SOUS EXCEL DIRECTEMENT
drouault
Messages postés73Date d'inscriptionsamedi 9 juillet 2005StatutMembreDernière intervention14 août 2007 7 oct. 2005 à 18:24
Comment est organiser ton tableau ? Si les informations sont sur une colonne vitesse et charge, tu peux toujours faire saisir tes valeurs par un input box et ensuite tu boucles dans la colonne pour la premiére valeur, tu stockes les numéros de ligne ok, puis tu retestes ces numéros de lignes avec le deuxiéme critére dans la deuxiéme colonne et tu sors la valeur de la troisieme colonne si ça correspond ....
Pour le test, la fonction Instr devrait te permettre de comparer ...
Sinon tu peux utiliser les fonctiosn Excel dans ton code avec une boucle par exemple ...
Sorry je sais pas si je suis trés clair et c pas forcément la meilleure soluce ...
Dr_Yce
Messages postés4Date d'inscriptionvendredi 7 octobre 2005StatutMembreDernière intervention10 octobre 2005 10 oct. 2005 à 08:28
hello, merci pour cette premiere reponse, ca me donne deja qq idees...
ms en fait, je dispose d'un tableau 8 lignes 5 colonnes : sur les lignes je choisis le poids, et sur les colonnes je choisis la vitesse, ce qui me donne un tableau avec 40 cellules
drouault
Messages postés73Date d'inscriptionsamedi 9 juillet 2005StatutMembreDernière intervention14 août 2007 10 oct. 2005 à 10:45
Donc tu veux récupérer la valeur à l'intersection de cette ligne et de cette colonne
Tu te déclares deux variables pour stocker le bon numéro de ligne et de colonne
Tu fais saisir la valeur de poids et de vitesse par un inputbox que tu stockes en variable
Tu boucle sur la premiere colonne en comparant la valeur saisit par l'utilisateur et celle de la colonne (Instr: fonctiond e comparaison de texte), si Instr = 1 alors tu sors de la boucle et tu stockes i (valeur de ta boucle dans une variable)
Même chose pour les lignes ....
Et ensuite tu récupére la valeur de la cellule à l'intersection :
Ton resultat = Cells(i,h).Value
ou i est le numéro de ligne ou ta valeur correspondante de test est vrai et h la même chose avec les colonnes ...
Je pars en déplacement 3 jours veux tu que je te prépare un exemple précis avec les boucles, etc ...
Dr_Yce
Messages postés4Date d'inscriptionvendredi 7 octobre 2005StatutMembreDernière intervention10 octobre 2005 10 oct. 2005 à 10:49
oui volontiers pour l'exemple, meme si j'ai assez bien compris la démarche, mais étant donné que je suis novice en VBA ca serait pas mal d'avoir un exemple sur lequel m'appuyé (j'ai qd meme une légère expérience de la programmation...)