Formule formulalocal recherchev avec variables

Bonjour,

Je cherche à faire une formule dans vba avec des variables :

Voici le code que j'ai commencé :

'variables GRILLE
Dim l1, l2, l3, l4, l5, l6, l7, l8
Dim c1, c2, c3, c4

'variables SYNTHESE DES GRILLES
Dim x 'ligne de départ pour formule
Dim y 'colonne de départ pour formule

x = 4
l1 = 5
c1 = 2
l2 = 245
c2 = 7
'Range("b" & x).FormulaLocal = "=RECHERCHEV(a" & x & ";" & "GRILLE!" & (a & "l1  :" & g & "l2") & ";7;FAUX)"
Range("b4").FormulaLocal = "=RECHERCHEV(a4;" & "GRILLE!" & ("a" & l1 & ":  g" & l2) & ";7;FAUX)"
'Range("b4").FormulaLocal = "=RECHERCHEV(a4;" & "GRILLE!" & (c1 & "l1 & :" & g & "l2") & ";7;FAUX)"
'Range("b4").FormulaLocal = "=RECHERCHEV(a4;" & "GRILLE!" & ("a5:g24") & ";7;FAUX)"

Je cherche à obtenir le résultat suivant :

un range variable avec colonne et ligne variable ici dans ma premiere ligne "b" & x mais je souhaite remplacer b par une variable

recherchev(a pareil je souhaire remplacer ce a par une variable de colonne égale à la variable b -1

enfin après la feuille GRILLE, je cherche à trouver la synthaxe pour le range(l1c1:l2c2)

Toute aide sera la bienvenue.

Merci d'avance

Salut,

Je trouve ta demande peu claire et de plus te ne fournis pas de fichier modèle

J'ai tenté d'en créer un moi-même et l'une des variantes que tu proposes fonctionne selon moi.

Que veux-tu de plus ? Fournis-nous un fichier clair avec la macro que tu as déjà.

Cordialement.

34jeff.xlsm (18.40 Ko)

bonjour Yvouille,

merci pour ta réponse.

je recherche un moyen d'automatiser tous mes recherches v sur ma page

il y a deux pages GRILLE et SYNTHESE DES GRILLES

je veux trouver un moyen par vba et par des variables pour effectuer tous mes recherchev

synthese des grilles b4, c4 et jusqu'en b23 et c23 les formules sont justes.

Je cherche à faire de même sur tout le reste du tableau (en sachant que j'ai mis un fichier joint allégé)

Je reste disponible si tu as des questions.

Merci encore pour ton aide

17test-forum.xlsx (865.16 Ko)

Salut Jeff,

Sur la base de ton nouvel envoi, il est difficile de comprendre où tu veux en venir avec ton travail et ça fout un peu la trouille. Je pense que si j’avais vu ton fichier en premier, je ne me serais pas lancé. Mais bon, je vais prendre mon courage à deux mains.

J’ai compris que tu voulais automatiser l’inscription de formules, mais est-ce une bonne fois pour toute ou est-ce que tu dois le faire régulièrement ?

Ensuite, pour automatiser un travail, il faut si possible qu’il y ait une certaine constance, telle qu’une ligne à utiliser qui revient chaque x lignes. Ce n’est par exemple pas le cas de ta feuille ‘’Grille’’ sur laquelle tu as bien des blocs de 20 données, mais parfois avec des lignes supplémentaires comme la ligne 4, la ligne 109, etc. Ca complique un peu le tout.

Le fait que tes formules de la feuille ‘’ synthèse des grilles (2)’’ renvoient en grande majorité des #REF! n’arrangent pas les choses, il est impossible de savoir à quoi correspond la formule en place.

Et le nombre exagéré d’exemples ne facilite rien. Il vaut mieux 2 bons exemples qu'une multitude qui embrouille.

Je te propose ceci. Tu crées un fichier modèle avec – si j’ai bien compris – juste deux fournisseurs sur la feuille ‘’Grille’’, pour autant que chaque ensemble de tableaux pour les fournisseurs que tu me fourniras corresponde bien à celui de tous les autres fournisseurs. Autrement, si chaque fournisseur à un ensemble de tableaux le concernant, il faudra me les donner tous ou du moins toutes les sortes d'ensemble de tableaux.

Ensuite, sur la feuille ‘’ synthèse des grilles (2)’’, j’ai compris que tu avais des magasins. Ce n’est absolument pas clair où commence un magasin et où il finit. Si tu pouvais ne laisser que deux magasins et en colorer l’un en bleu (comme c’est déjà la cas) et l’autre dans une autre couleur, ça faciliterait très certainement la compréhension de ton travail.

Ensuite, pour l’un des magasins – pour autant que l’ensemble des tableaux le concernant soit identique à l’ensemble des tableaux de tous les autres magasins – j’aimerais que tu me colorie toutes les cellules dans lesquelles tu attends qu’une formule soit placée et que tu places manuellement dans quelques-unes de ces cellules les formules attendues. Je considérerai que les formules que tu inscriras pourront logiquement être incrémentées vers la droite et vers le bas pour autant qu’il n’y ait pas d’autres formules en place pour montrer où s'arrête l'incrémentation.

A te relire.

Bonjour Yvouille,

Merci pour ta patience et pour le temps que tu me consacres.

J'ai tenu compte de ce que tu m'as demandé et j'ai repris le fichier en essayant d'être le plus explicite possible.

J'ai mis en fond vert clair et couleur du texte noire toutes les cellules dont la formule est juste

J'ai mis en fond vert foncé et couleur du texte blanche toutes les cellules dont il faut mettre une formule (Par contre j'ai fait cela juste pour la première trame colonnes A:I, mais après, ce sont les mêmes cellules mais 9 colonnes plus loin où je chercherai à compléter par des formules).

Je t'ai mis deux bulles de texte dans le fichier où j'ai fait du mieux possible pour expliquer au plus simple le lien entre chaque formule.

Elles se trouvent sur la page synthese_grille D5-L95.

Après si tu le permets, j'ai peut-être trouvé une manière de commencer ce code mais il me manque la syntaxe.

Voici à quoi j'ai pensé :

Sub macro4()
Dim l1
Dim m1
Dim a1
Dim b1
l1 = 4 'ligne départ feuille synthese des grilles
a1 = 5 'ligne départ feuille GRILLE
b1 = 7 'colonne départ feuille GRILLE
m1 = 2 'colonne départ feuille synthese des grilles

Sheets("SYNTHESE_GRILLE").Cells(l1, m1).FormulaR1C1 = "=grille!.cells(a1,b1)"  
'Cette ligne du code ne marche pas mais cela correspondrait totalement à résoudre mon problème c'est-à-dire : 
'partir d'une cellule (cells(l1,m1)) donc à ligne et colonne variables qui serait égale à une cellule 
'dont la ligne et la colonne seraient variables également (cells(a1,b1)). 
'Mais je n'arrive pas à trouver la bonne syntaxe pour l'écrire

End Sub

Encore un énorme merci pour ton aide et pour le temps que tu m'offres!

Je reste disponible s'il te faut le moindre élément!

Cordialement

7test-forum.xlsx (877.42 Ko)

Salut,

Dans le fichier ci-joint, la macro placée derrière le bouton en A1 devrait selon moi répondre à ton attente.

Tu ne m’as pas répondu quant à savoir si c’est une mise en place de formules que tu dois faire une bonne fois pour toute ou non.

Une si grande quantité de formules ralenti un peu tout ton fichier. Tu pourrais aussi placer le résultat de la recherche à la place de la formule l’effectuant.

A te relire.

39test-forum-v1.zip (745.13 Ko)

Bonjour Yvouille,

Merci pour ton aide et la macro, elle fonctionne parfaitement!

Il est vrai que ces formules risquent de ralentir le fichier.

Je cherchais à mettre en place les formules dans chaque cellule mais maintenant que tu en parles,

cela pourrait être avantageux pour le fichier de chercher toutes les formules grâce à ta macro.

Et une fois cela fait, de figer le résultat dans toutes les cellules.

Je vais peut-être abusé de ta générosité, mais est-ce que tu aurais une idée pour permettre d'arriver à figer le résultat des cellules ?

En tout cas, Yvouille, quoi qu'il en soit, ton aide m'a été précieuse et très utile.

Je t'en remercie!!

Cordialement

Je vais peut-être abusé de ta générosité, mais est-ce que tu aurais une idée pour permettre d'arriver à figer le résultat des cellules ?

Bonjour,

on remplace la .value de la cellule par .value

Regarde ton fichier ici avec mise en couleur là où sont les formules/valeurs

P.

Je n'ai rien touché d'autre au code existant

Bonjour patrick1957,

Merci beaucoup pour ta réponse!

J'ai regardé la formule que tu as proposé et je crois qu'il y a un problème :

Ce code recopie la valeur des résultats présents dans la 1ère ligne sur les 19 lignes suivantes.

Après je pense que ton code est bon, mais il doit y avoir juste un élément à apporter pour arriver au résultat que je recherche.

Est-ce que tu aurais une idée pour que chaque cellule soit figée sans que la première valeur soit recopiée sur tout la plage ?

Je te remercie pour ton aide et pour le temps que tu m'accordes!

Cordialement

Bonjour,

Le code, comme indiqué, n'est pas de moi..

J'ai juste fais en sorte de colorer les cellules où iront les formules et ensuite leur résultats

Je pense que tu demandais à avoir le résultat des formules et non plus les formules gourmandes en ressource non ?

P.

Bonjour patrick1957,

Oui tu as raison! Mon problème est résolu.

Merci beaucoup Yvouille et patrick1957 pour votre temps et votre aide!

Cordialement

Bonjour tout le monde,

@Jeff

Je suis un peu surpris que tu dises que ton problème est résolu, puisqu'avec la solution reçue, tu as des données erronées qui sont renvoyées.

Cela provient du fait que j'avais placé l'instruction Application.Calculation = xlManual en début de code et que lorsque les formules sont remplacées par des valeurs, le "recalcul" n'a pas eu lieu.

As-tu modifié ton code toi-même ? Et si oui, est-ce que ta solution - que j'aimerais bien connaitre - prend bien plus de temps ?

Amicalement.

Bonjour Yvouille,

En fait, j'avais commencé un code, mais qui n'avait pas abouti (car je n'ai pas réussi à mettre en place la récurrence).

Du coup, je suis resté sur ton code en espérant que le fichier ne ralentisse pas trop.

Mais grâce à ton message, je comprend d'où vient l'erreur.

En utilisant les calculs automatiques à nouveau, la formule met un temps de 2 min 1 sec alors que ta formule sans les calculs automatiques met moins de 2 s.

Conclusion, je pense rester sur le code que tu m'avais proposé, Yvouille, et le jour où le fichier sera trop ralenti, j'ajouterai le code que patrick1957 a suggéré.

Merci pour ton aide et pour ton temps!

Cordialement

Merci pour ta réponse.

Je te laisse tester ce nouveau code qui remplace les formules par leur valeur tout à la fin. Il prend environ le double du temps d'auparavant.

Bonnes salutations.

50test-forum-v4.xlsm (0.96 Mo)

Bonjour Yvouille,

J'ai testé ton code et il fonctionne très bien. Je viens d'effectuer le test et la durée est de 14 secondes.

C'est très rapide!!

Merci pour tous les éléments et pour le temps que tu m'as accordé!

Salutations

Rechercher des sujets similaires à "formule formulalocal recherchev variables"