Faire une sélection de cellules dans des tableaux excem selon des critères

Résolu
Dr_Yce
Messages postés
4
Date d'inscription
vendredi 7 octobre 2005
Statut
Membre
Dernière intervention
10 octobre 2005
- 7 oct. 2005 à 14:40
drouault
Messages postés
73
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
14 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.

Comment faire?

tous conseils et suggestions sont bienvenus.

merci

11 réponses

drouault
Messages postés
73
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
14 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

nbre_ligne_utiliser = Worksheets(1).Cells.SpecialCells(xlCellTypeLastCell).Row
nbre_colonne_utiliser = Worksheets(1).Cells.SpecialCells(xlCellTypeLastCell).Column

For i = 1 To nbre_ligne_utiliser

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
3
Tuning Max
Messages postés
314
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
31 août 2006
1
7 oct. 2005 à 16:46
sur quel soft veux tu faire ça? Excel, Access ou autre?
0
Dr_Yce
Messages postés
4
Date d'inscription
vendredi 7 octobre 2005
Statut
Membre
Dernière intervention
10 octobre 2005

7 oct. 2005 à 16:48
c'est sur excel
0
drouault
Messages postés
73
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
14 août 2007

7 oct. 2005 à 18:19
0

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

Posez votre question
drouault
Messages postés
73
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
14 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 ...

Si t'as besoin d'aide pas de souci

A+

Pierre
0
Dr_Yce
Messages postés
4
Date d'inscription
vendredi 7 octobre 2005
Statut
Membre
Dernière intervention
10 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

qu est ce que ca donne vu comme ca?

encore merci pour l'aide

++
0
drouault
Messages postés
73
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
14 août 2007

10 oct. 2005 à 10:21
0
drouault
Messages postés
73
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
14 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 ...
0
Dr_Yce
Messages postés
4
Date d'inscription
vendredi 7 octobre 2005
Statut
Membre
Dernière intervention
10 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...)

merci encore pour l'aide ;)
0
drouault
Messages postés
73
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
14 août 2007

10 oct. 2005 à 11:36
0
drouault
Messages postés
73
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
14 août 2007

10 oct. 2005 à 11:38
Ok je te fais un exemple bien commentée .... à dans trois jours car je suis pas sur d'avoir accés au web pdt ce temps la ...

A+
0