pbm formule equiv dans macro

stienne

XLDnaute Junior
salut à tous,
il n'y a pas longtemps ,j'ai fait appel au savoir du forum pour m'aider a réaliser un resultat en fonction d'un tableau de données.
la réponse était au poil et fonctionnait à merveille dans la cellule.
j'ai appliqué la méthode dans ma macro mais HIC ça cloche !
je joint le fichier test: RapidShare: 1-Click Webhosting

la prgm clash quand on lui demande de donner la valeur du chlore actif (ligne dans l'usf "autres" bouton "valider") , donnée fonction de la valeur pH et dpd1 dans le tableau de la feuille données et du tableau de resultat de la feuille cacot. j'utilise pour ce faire la fonction index(nom1,equiv(A1,nom2,1),equiv(A2,nom3,1))
faut il changer de méthode ou y a t-il une erreur dans ma ligne
 

jeanpierre

Nous a quitté
Repose en paix
Re : pbm formule equiv dans macro

Bonsoir kjin, stienne,

Poster ici, possible... mais l'appli.fait 1Mo ou pas loin....

Je viens de l'ouvrir, après avoir cliqué sur le Free et patienté et donné le code plus bas ensuite, mais il est trop tard pour moi.

De plus, pas sur du tout de pouvoir répondre...
 

stienne

XLDnaute Junior
Re : pbm formule equiv dans macro

apparement la fonction EQUIV ne fonctionne pas, pourquoi ? y a t il une subtilité sous VBA ?
merci de votre aide !!
l'usf se lance automatiquement , choisissez la piscine, l'agent et faite "nouvelle"
sur l'usf suivant taper "2" pour la valeur dpd1, "2" pour la valeur dpd3, et "7" pour pH, faite les choix obligatoire puis faite suivant, sur l'usf suivant choisissez "suivant" puis "valider" sur le dernier usf.
le prgm plante à la ligne sur la fonction EQUIV "erreur de compilation, Sub ou function non définie"

personne n'a une petite idée de mon pbm ?
 

fifi

XLDnaute Occasionnel
Re : pbm formule equiv dans macro

hello
je commence a avoir un peu d'expérience sur les EQUIV par macro !!!! j'ai pas mal galéré.

sous VBA le EQUIV s'utilise de cette façon :

application.WorksheetFunction.Match( valeur_recherchée , plage_ou_rechercher, 0)

MAIS il y a des précautions :

- toujours bien définir le chemin de :
valeur_recherchée
plage_ou_rechercher

genre ta valeur recherchée = sheets("test").range("valeur_to_search")
surtout si les plage vont dans une feuille autre que celle ou la macro est demandée

- prévoir le cas ou ca la valeur ne serait pas trouvée avec un : on error resume next
dont je cherche encore pouvoir me débarasser .. :s
- noter qu'il faut utiliser des "," et non pas des ";"...ect
- et bien sûr charger le résultat dans une variable ce qui donne :

on error resume next
dim n as integer
n = application.WorksheetFunction.Match(valeur_recherchée,plage_ou_rechercher,0)
ensuite tu peux utiliser la valeur n ou tu veux.
 

stienne

XLDnaute Junior
Re : pbm formule equiv dans macro

la formulation fonctionne mais malheureusement le résultat affiche tjrs "0", pourtant les plages sont définis et les variables identifier dans la macro.
pas de plantage.
j'ai essayer en changeant arg3 par "1" mais ça ne change rien,
 

jeanpierre

Nous a quitté
Repose en paix
Re : pbm formule equiv dans macro

Bonsoir Wilfried,

C'est simple, enfin presque....

Tu cliques sur le lien, et ensuite en bas vers droite sur free, en fait le bas de la seconde colonne....

Un peu de temps à attendre, et ensuite il est demandé un mot à indiquer, enfin 4 lettres ou chiffres.... Lettres majuscules et chiffres....

Et c'est bon, mais n'empêche que c'est chi..

Le fichier est en Xls 900 et quelques kilos...., en zip et comme d'hab.... il en aurait fait moins..... mais encore trop lourd pour le forum....

Bonne soirée.

Jean-Pierre
 

wilfried_42

XLDnaute Barbatruc
Re : pbm formule equiv dans macro

re:

la ligne qui plante

Code:
Private Sub CommandButton1_Click()
With Sheets("Données")
 [COLOR="Red"]   .[A12] = CDate(Accueil.ComboBox2.Text)[/COLOR]

La mise à jour de la cellule serait possible si tu deprotegeais ta feuille auparavant
Code:
Private Sub CommandButton1_Click()
With Sheets("Données")
       .unprotect password:="toto"
 [COLOR="Red"]   .[A12] = CDate(Accueil.ComboBox2.Text)[/COLOR]

n'oublie pas de la reproterger à la fin

Joli programme en tout cas
 

stienne

XLDnaute Junior
Re : pbm formule equiv dans macro

Seul une partie des lignes sont protégées et contient des espaces, simplement pour avoir une grille de départ pour l'affichage des graphs.
Pour l'instant il ne s'agit pas de l'onglet "graphique"dans l'usf " accueil", il s'agit de l'onglet analyse qui renvois sur l'usf "analyse".
L'erreur se produit dans la prog associer au "commandbutton2" afficher par "validation" dans l'usf "autres".
j'ai apporté les modifs de fifi concernant la sortie des variables de la formules. Une fois cela fait la prog ne plante plus mais le souci, c'est que le résultat affiche tjs "0" quelques soit les valeurs dpd1 et ph que l'on retrouve dans la feuille Cacot censé servir de réference pour donné la valeur de chlore actif.
je me pose la question sur le réferenciel des nom de plage faut il les lié à la feuille ou au classeur ? à priori ca ne change rien dans la version actuel ils sont defini sur le classeur.
là je sèche grave !
qq'un à une idée ?
 

stienne

XLDnaute Junior
Re : pbm formule equiv dans macro

Peu importe de toute façon cela ne concerne pas le pbm que je rencontre ici puisque j'inscrit la données "chlore actif " dans la colonne"y" de la feuille données où les ligne 1 et 2 sont effectivement protégées et remplies par des espaces, mais comme les données sont inscrite à la suite cela ne pose pas de pbm.
j'essaie de spécifier les chemins peut être que le pbm viens de là, en attendant, si qq'un à une autre idée?
 

kjin

XLDnaute Barbatruc
Re : pbm formule equiv dans macro

Bonsoir le fil,
Rapidtruc, ouverture auto...et pour finir mdp sur les feuilles!!
Néanmoins, il y a un pb avec la plage nommée Ph (que je n'ai pas localisé) mais efface la et recrée la à nouveau et ça repart.
Ensuite, dans le bouton valider de ton formulaire :(commandbutton2)
x = analyse.Textdpd1.Value
y = analyse.Textph.Value
' le reste du code
puis remplace :
Sheets("Données").Range("y65536").End(xlUp).Offset(1, 0).FormulaLocal = "=Index(resultatHOCL;EQUIV(" + x + ";dpd1;1);EQUIV(" + y + ";Ph;1))"
' le reste du code
Après test, chez moi c'est OK
A+
kjin
 

Discussions similaires

Statistiques des forums

Discussions
312 849
Messages
2 092 793
Membres
105 534
dernier inscrit
EmilieG60