Etrange que tout fonctionne parfaitement mais qu'il y ait une erreur...
Peux-tu donner exactement la formule que tu as utilisée, éventuellement avec une copie d'écran?
Pour les tableaux, voir mon tuto...
Etrange que tout fonctionne parfaitement mais qu'il y ait une erreur...
Peux-tu donner exactement la formule que tu as utilisée, éventuellement avec une copie d'écran?
Pour les tableaux, voir mon tuto...
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------
Mes billets de blog sur DVP
Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
---------------
voici la formule de riaolle que j'ai réécris. dans la cellule concerné ("C4") et lorsque je le valide, il y a une boite de message d’erreur qui s'affiche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part =si(B4="";"waiting for your answer";si(RECHERCHEV((A4;INDIRECT("'"&B1&"'!A:B");2;FAUX)=B4;"well done";"try again "))
super, merci pour le tuto.
Je suis preneur et tu as complètement raison quand tu dis cela."il me semble aberrant, à l’heure actuelle, de rencontrer encore autant d’utilisateurs qui ne les connaissent pas ou qui les utilisent mal.
Normalement, les parenthèses sont en couleur lorsque tu rédiges ou édites ta formule. La première parenthèse ouvrante est TOUJOURS noire et les parenthèses liées sont de même couleur. Dès lors, ta dernière fermante devrait être noire, alors qu'elle ne l'est pas. Cela veut dire que tu en as trop ou trop peu. De plus, l'infobulle te met en gras où tu es et ce qu'Excel attend de toi. En cliquant dans la formule éditée, tu peux donc avancer de fonction en fonction et de paramètre en paramètre pour voir si tu n'ouvres (ou ferme) pas trop (ou trop peu) de parenthèses...
Ici, tu as deux parenthèses après le RECHERCHEV alors qu'il n'en faut qu'une
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------
Mes billets de blog sur DVP
Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
---------------
ça marche Nickel, merci pour votre aide et le temps consacré à nous aider.
Je vais bien sur continuer mon travail et revenir vers le forum si besoin.
merci encore
Dans la formule qui t'a été donnée, ce que j'ai mis en rouge gras, c'est plus que bof bof. A l'heure des tableaux structurés, ce genre de truc est pour moi inadmissible...
=si(B4="";"waiting for your answer";si(RECHERCHEV(A4;INDIRECT("'"&B1&"'!A:B");2;FAUX)=B4;"well done";"try again…"))
Il FAUT utiliser les tableaux structurés. Ce n'est pas une option dans les versions actuelles de l'outil, selon moi en tout cas.
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------
Mes billets de blog sur DVP
Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
---------------
pierre pourrais-tu me donner une description à coté des 3 lignes code vba que tu m'as transmis.
j'aimerai avoir une idée du déroulement.
Voici
Range("t_test[anglais]").Formula = "=INDEX(t_Dico[Anglais],RANDBETWEEN(1,ROWS(t_Dico)))" applique la formule =INDEX(t_Dico[Anglais], ALEA.ENTRE.BORNES(1,LIGNES(t_Dico))) à la colonne t_Test[Anglais]. Cela revient, en Excel, à créer la colonne formulée (voir mon tuto)
Range("t_test[anglais]").Value = Range("t_test[anglais]").Value réalise un copier-collage valeur sur la colonne t_Test[Anglais] pour figer les mots de vocabulaire, sinon ils seraient modifiés à chaque réponse
Range("t_test[Réponse]").Value = "" Vide la colonne des réponses.
Lorsque tu utilises .Value ou .Formula sur plusieurs cellules, ici une colonne du tableau, Excel va placer la valeur ou la formule sur chaque cellule de la plage, et donc "imiter" le comportement d'un CTRL+ENTER en Excel lorsque plusieurs cellules sont sélectionnées.
La deuxième ligne peut paraître déroutante, car il est étonnant d'écrire une ligne de code telle que a = a et on pourrait s'attendre à devoir faire un .Copy puis un .PasteSpecial sur la plage. Mais lorsque plusieurs cellules contiguës d'un Range monozonesont sélectionnées, VBA crée un tableau à deux dimensions (array) à l'appel de Range.Value reprenant les valeurs des cellules du Range. Comme .Value renvoie les valeurs trouvées dans la cellule, cette ligne revient à alimenter le tableau Range.Value avec ses propres valeurs et non plus ses formules. Il faut toutefois bien noter que ce comportement n'est valable que pour une plage monozone!
Dans le cas d'une plage multi-zones, le tableau (array) est créé en ne prenant en compte que la zone qui a été sélectionnée en premier! De plus, en cas de Range multi-zone, Range.Value = Range.Value procède cellule par cellule pour la zone qui a été sélectionnée en premier, et copie la valeur de la première cellule (celle du coin supérieur gauche) de la zone sélectionnée en premier sur toutes les cellules des autres zones que la première ==>> On devrait donc toujours s'assurer que le Range est monozone avant d'utiliser Range.Value = Range.Value, en testant If Range.Areas.Count = 1 Then...
L'illustration qui suit montre bien que la zone sélectionnée en premier est E2:E5 et donc, le tableau à deux dimensions construit possède bien 4 lignes
Et après l'exécution de la ligne de copie, la zone C2:C4 a reçu la valeur de D1...
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------
Mes billets de blog sur DVP
Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
---------------
Pierre, sans aucune prétention de ma part, j'ai vu cette vidéo et je voulais ton avis, car j'ai bien des idées pour "bidouiller" quelque chose, sans passer par du VBA.
merci de ton retour. Je suis entrain de travailler également sur ce que tu m'as communiqué.
voici le lien.
J'ai parlé de formule, pas de construction de classeur. La vidéo illustre l'ordonnancement aléatoire d'une liste finie et arrêtée de valeurs numérique (dans le cas de la vidéo, 30). Ce n'est pas ce qui est demandé ni proposé dans ton application, à savoir extraire aléatoirement x mots d'une liste de y mots.
Mais parlons de cette vidéo, puisque tu la cites, illustration désolante des conneries que l'on peut parfois trouver sur le net, et que hélas beaucoup de débutants prennent pour argent comptant.
L'auteur propose de créer un ordre de passage aléatoire de 30 personnes à un examen. Il va donc créer une très grande liste de nombres aléatoires bornés entre 1 et 30 (il crée une liste de +/- 400 valeurs), puis il propose de supprimer les doublons, car statistiquement, plus la liste créée est grande, plus il y a de chances d'avoir les nombres 1 à 30 au moins une fois. J'ai cru qu'une fois sa très longue liste créée, il allait supprimer les doublons (Excel dispose d'un outil pour cela), en espérant avoir bien toutes les valeurs entre 1 et 30. Mais non, car pour contredire le titre de sa vidéo ("Générer des nombres aléatoires sans VBA"), l'auteur, à 3:02, montre qu'il va construire une macro ^^ Wouah, on crée donc un truc sans vba mais avec macro . Comprenne qui pourra. Qui plus est, l'auteur de la vidéo n'utilise pas les tableaux structurés, ce qui me paraît être un comble pour une vidéo "formative"...
Je l'ai regardée jusqu'au bout. C'est du très haut vol en matière de n'importe quoi, cette vidéo (Après, on s'étonne du niveau que certains membres ont sur nos forums, mais si ils suivent les formations ou achètent les bouquins de ce gugusse, on comprend mieux).
Pour le but que l'auteur de la vidéo se propose d'atteindre, c'est aberrant de passer par ce genre de construction et de manipulations, et il n'y a réellement pas besoin de VBA. Une simple liste reprenant les valeurs de 1 à x et une colonne à côté avec la fonction ALEA permet d'ordonner les numéros de façon aléatoire. Pour actualiser la liste, il suffira de retrier sur les numéros puis sur la colonne ALEA pour obtenir un nouvel ordre des numéros, sans toutes les manipulations proposées dans la vidéo ^^, et surtout sans code vba, comme illustré ci-dessous.
Je maintiens que, par formule et donc sans macros et/ou manipulations "complexes", je ne vois pas comment il serait possible de créer une liste de nombre aléatoires sans doublons avec Excel
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------
Mes billets de blog sur DVP
Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
---------------
merci pour ta franchise, tu pourrais me communiquer des sites ou tutos , dont tu reconnais le sérieux en terme de pédagogie.
j'ai de la matière avec ton tuto.
Bonjour Pierre,
C'est hélas tellement vraiillustration désolante des conneries que l'on peut parfois trouver sur le net, et que hélas beaucoup de débutants prennent pour argent comptant.
@Crocket95
Les tutoriels publiés sur ce site font parties de cette catégorie car avant publication il passe par un comité de lecteurs connaissant la matière et ensuite par un correcteur orthographiquetu pourrais me communiquer des sites ou tutos , dont tu reconnais le sérieux en terme de pédagogie
Philippe Tulliez
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier
Philippe m'a coupé l'herbe sous le pied, mais
Peut-être devrait-on étoffer l'offre et faire des vidéos, mais nos rédacteurs (ceux dont les tutos sont annoncés sur nos pages cours en tout cas, et qui en général ont des étoiles rouges) soumettent leurs tutos à une relecture technique (et ils savent que perso, je suis très critique et que ma franchise est, là aussi, assez légendaire ^^), puis un ou plusieurs relecteurs corrigent les éventuelles fautes de français (syntaxe, grammaire, orthographe). Ce n'est qu'après que les tutos sont annoncés et intégrés dans nos pages cours... Mais réaliser des vidéos de qualité demande un bon logiciel et prend du temps (j'en fais pour mes clients, et j'en ai fait une pour DVP, mais si tu veux de la qualité, tu y passes vite des heures...)
Perso, je suis ouvert à ce que de nouveaux rédacteurs viennent étoffer notre offre de tutos qui, je tiens à le souligner, sont mis gracieusement à disposition de nos membres, comme tout ce que DVP propose. La qualité de la très grande majorité des réponses aux questions sur nos forums (pas toutes, malheureusement) vient compléter l'offre de DVP qui reste, j'en suis profondément convaincu, LA référence pour se former en Francophonie sur toutes les techniques informatiques. (Je précise que je n'ai évidemment pas le moindre centime d'euro ni pour mes interventions, ni pour la "publicité" que je viens d'écrire... , pas plus d'ailleurs que Philippe et les autres membres de la rédaction de DVP...)
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------
Mes billets de blog sur DVP
Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
---------------
,Pour les demandes formulées précédemment (d'autres thématiques ), tu devrais pouvoir t'en sortir en regardant, comprenant et adaptant les solutions proposées.
avec le peu de connaissance que j'avais d'excel, je me disais pourqoi pas. Là, tu me propose une structure de code; c'est comme si tu disais voici l'Amérique. C'est carrément un nouveau continent pour moi , je t'assure que lorsque j'essaie de trouver des points d'appuie avec la lecture de ton code,c'est mort .
Je travaille sur la mise en place d'une liste déroulante par thème. Pour choisir le thème avec lequel je veux travailler.
je vous tiendrai au courant.
Ce billet de blog t'intéressera peut-être...
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------
Mes billets de blog sur DVP
Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
---------------
J'ai essayé d’utiliser une plage nommée comme expliqué dans le tuto, mais il m'affiche une boite de dialogue erreur.
je suis entrain de chercher d'ou peut venir l’erreur.
Ma liste déroulante fonctionne, mais j'ai du l'enregistrer différemment. lorsque je saisi dans la zone "source" le nom du tableau, il m'affiche une erreur.Par contre lorsque je sélectionne quelques lignes de la colonne, cela fonctionne parfaitement et ce, de façon dynamique.
Pierre, voici l'idée du code que j'ai refait à ma façon.,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Sub Prepare() Dim Counter As Long Dim Index As Long Dim liste liste = Range("H1").Value Set liste = CreateObject("Scripting.Dictionary") For Counter = 1 To Range("t_Test").Rows.Count Index = Application.RandBetween(1, Range("t_Test").Rows.Count) Do While liste.Exists(Index) Index = Application.RandBetween(1, Range("t_Test").Rows.Count) Loop liste.Add Index, Index Range("t_test[anglais]")(Counter).Value = Range("liste[Anglais]")(Index) Next Range("t_test[anglais]").Value = Range("t_test[anglais]").Value Range("t_test[Réponse]").Value = "" End Sub
le code bug à ce niveau là:.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Range("t_test[anglais]")(Counter).Value = Range("liste[Anglais]")(Index)
Est-ce que mon idée est correcte, sinon peux-tu me dire d'où vient le problème.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager