|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : décembre 2008 Messages : 27 ![]() |
Bonjour,
Je suis un peu novice en VBA et j'ai donc essayé un petit programme simple mais cela ne marche pas... Je veux créer une fonction qui prend 2 valeurs en entrée. Ces 2 valeurs sont recherchés dans un tableau (la valeur 1 doit être contenue dans la colonne A et la valeur 2 doit être contenue dans la colonne B). Si ces 2 conditions sont remplies, je souhaite récupérer la valeur de la colonne 3. Je parcours ainsi tout mon tableau et je concaténe les résultats avant de les retourner. Code :
Lorsque j'aurai compris cela je m'attaquerai à ne parcourir que mon tableau et non pas les 100 premières lignes de la feuille... En tt cas, si vous avez des idées ce serait super ! Merci à vous et bonne soirée, Nico |
||
|
|
00
|
|
|
#2 | ||
![]() ![]() |
un message d'erreur ?
c'est jamais une bonne idée d'utiliser Select ... il faut préciser la feuille concernées devant Cells, range.... Utilise une variable string intermédiaire pour calculer ta concaténation Code :
__________________
page à bbil : dernières entrées : Débuter en VB6 Mes contributions en téléchargement Les pages VB : FAQs, Tutoriels VB, Outils , Sources, WIKI Impératif "A LIRE AVANT DE POSTER"
|
||
|
00
|
|
|
#3 | ||
|
Invité régulier
![]() Antoine Inscription : octobre 2011 Messages : 5 ![]() |
bonjour,
je ne suis pas sur de tout avoir compris et c'est ma première réponse sur ce forum mais essaye 1. d'ajouter en première ligne de ta fonction (pour initialiser ton résultat) 2. de changer C Code :
Code :
maConcatenation=maConcatenation&" "&Cells(length,3).text Dis moi si ça aide |
||
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : décembre 2008 Messages : 27 ![]() |
Alors tout d'abord merci à vous 2.
La solution donnée, d'écrire ".text" ne fonctionne pas. Je n'ai aucune erreur à l'execution mais le résultat obtenu est #VALEUR.... Nico |
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Antoine Inscription : octobre 2011 Messages : 5 ![]() |
as-tu essayé d'ajouter
maConcatenation = "" en 1ère ligne de ta fonction ? |
|
|
00
|
|
|
#6 | |
![]() ![]() |
Citation:
as tu corrigé tes fautes de syntaxes ? (il manque un s à Worksheeets) as tu enlevé ce "Then" perdu en plein milieu de ton code ?
__________________
page à bbil : dernières entrées : Débuter en VB6 Mes contributions en téléchargement Les pages VB : FAQs, Tutoriels VB, Outils , Sources, WIKI Impératif "A LIRE AVANT DE POSTER"
|
|
|
00
|
|
|
#7 | |||
|
Membre Expert
![]() Retraité Inscription : avril 2011 Messages : 692 ![]() |
Bonjour,
Tu as dû faire l’impasse sur le conseil de bbil Citation:
Code :
|
|||
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : décembre 2008 Messages : 27 ![]() |
Oui j'ai essayé et cela ne change rien. Par contre, j'appelle ma fonction sur toute une colonne.
Le premier résultat est 0 au lieu de test1. Le deuxième résultat est 0 0#VALEUR!0 au lieu de test3 test2 Le troisième résultat est 0 0#VALEUR!0 0 au lieu de test3 test2. J'ai donc l'impression que la concaténation est mauvaise et qu'il ne réinitialise pas la valeur malgré le maConcatenation="" et st="" |
|
|
00
|
|
|
#9 | |
![]() ![]() |
Citation:
de plus dis nous comment tu appelle ta fonction quels sont les paramètres utilisés ? que contiennent tes colonnes A et B ?
__________________
page à bbil : dernières entrées : Débuter en VB6 Mes contributions en téléchargement Les pages VB : FAQs, Tutoriels VB, Outils , Sources, WIKI Impératif "A LIRE AVANT DE POSTER"
|
|
|
00
|
|
|
#10 | ||
|
Invité de passage
![]() Inscription : décembre 2008 Messages : 27 ![]() |
Pardon, j'ai tenu compte des différentes remarques.
Code :
Si je remplace Cells(X,Y) par Cells(X,Y).text, j'obtiens le résultat évoqué tt à l'heure: Le premier résultat est 0 au lieu de test1. Le deuxième résultat est 0 0#VALEUR!0 au lieu de test3 test2 Le troisième résultat est 0 0#VALEUR!0 0 au lieu de test3 test2. Pour ce qui est de la mise en place de mon test, j'ai la Feuil1 avec: A6 qui contient DM01 B6 qui contient 3.0 C6=maConcatenation(A6;B6) A7 qui contient DM02 B7 qui contient 3.1 C7=maConcatenation(A7;B7) A8 qui contient DM03 B8 qui contient 3.1 C8=maConcatenation(A8;B8) et sur la feuille nommée "Calcul": A6 qui contient DM01 B6 qui contient 3.0 C6 qui contient test1 A7 qui contient DM02 B7 qui contient 3.1 C7 qui contient test3 A8 qui contient DM02 B8 qui contient 3.1 C8 qui contient test2 A9 qui contient DM03 B9 qui contient 3.2 C9 qui contient test Merci en tt cas ! |
||
|
|
00
|
|
|
#11 |
![]() ![]() |
Encore une fois ce n'est pas le bon ... code ! ..
cette ligne : ne doit pas être accepté par l'éditeur VBA ...! Ton with ne sert à rien si tu oublie le point devant tes Cells : Ensuite je comprends pas ce que tu veux faire avec ton code ..? tu met ta formule en colonne C ...alors que le contenu de ta colonne C fait parti de la concaténation que tu désire obtenir ... tu n'as pas l'impression de créer une formule qui se "mord la q..."
__________________
page à bbil : dernières entrées : Débuter en VB6 Mes contributions en téléchargement Les pages VB : FAQs, Tutoriels VB, Outils , Sources, WIKI Impératif "A LIRE AVANT DE POSTER"
|
|
00
|
|
|
#12 | ||
|
Invité de passage
![]() Inscription : décembre 2008 Messages : 27 ![]() |
Ceci est accepté par VBA chez moi...
Bon, j'ai rajouté les . devant les Cells et j'obtiens des #VALEUR! pour chaque cellule de résultat. Code :
|
||
|
|
01
|
|
|
#13 |
![]() ![]() |
.... enlève ce .Select ...
et revoit la position de ta formule ..
__________________
page à bbil : dernières entrées : Débuter en VB6 Mes contributions en téléchargement Les pages VB : FAQs, Tutoriels VB, Outils , Sources, WIKI Impératif "A LIRE AVANT DE POSTER"
|
|
00
|
|
|
#14 | ||
|
Invité de passage
![]() Inscription : décembre 2008 Messages : 27 ![]() |
Oui merci, c'est super. Bon je ne comprends pas ce que signifie la ligne volatile que tu as rajouté mais le résultat me convient. Merci encore. Je mets le code que tu as fait pour ceux qui veulent le visualiser.
Code :
Nico |
||
|
|
00
|
|
|
#15 |
|
Expert Confirmé
![]() Philippe ex Observeur CGG / Analyste prog. Inscription : juin 2006 Messages : 1 707 ![]() |
Salut, voir http://silkyroad.developpez.com/vba/fonctions/#LII-C pour rôle de Application.Volatile
__________________
Pensez à Voter, d'avance merci. ( Pouces en bas à la droite de Citer )Balisez votre code après l'avoir indenté sous Excel via Smart Indenter Autre utilitaire : MZ Tools 3.0 VBA Contribution : Excel / Word / PDF avec Adobe Acrobat Pro / PDFCreator 1 2 |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com