Problème du code

Bonjour,

J'essaie de faire un code qui permet d'appliquer 2 formules sur une nouvelle feuille renommée en se basant sur les données d'une autre feuille que je souhaite la choisir en entrant son nom.

voici le code sur lequel je travaille :

With ActiveSheet.UsedRange

NbLignes = .Row + .Rows.Count - 1 'la dernière ligne du tableau

End With

For i = NbLignes To 2 Step -1 'on commence à partir de la 2ème cellule de la colonne Q

Cells(i, "Q").FormulaR1C1 = "=RC[-3]/RC[-6]" ' sur la nouvelle feuille j'applique cette formule

'je fais appel à la feuille avec qui je veux comparer des données

nomfeuil = InputBox("Veuillez entrer le nom de la feuille objet de la comparaison")

Sheets(nomfeuil).Select

Cells(i, "P").FormulaR1C1 = "=IF(ISERROR(VLOOKUP(nomfeuil!RC[-1],nomfeuil!R2C15:R12C16,1,FALSE))=TRUE,""Faux"",VLOOKUP(nomfeuil!RC[-1],nomfeuil!R2C15:R12C16,2,FALSE))"

'en Excel c'est la formule suivate : SI(ESTERREUR(RECHERCHEV(K2;$F$2:$G$1229;1;FAUX))=VRAI;"Faux";RECHERCHEV(K2;$F$2:$G$1229;2;FAUX))

Next i

Merci de m'aider sur ce point avec des explications SVP pour apprendre.

Salut,

Je peux déjà te dire que si tu veux introduire des variables dans une formule, tu dois mettre une guillemet et un digne & avant la variable, la variable, le signe & et à nouveau une guillemet.

Par exemple

Cells(i, "P").FormulaR1C1 = "=IF(ISERROR(VLOOKUP(" & nomfeuil & "!RC[-1]," & nomfeuil & "!R2C15:R12C16,1,FALSE))=TRUE,""Faux"",VLOOKUP(" & nomfeuil & "!RC[-1]," & nomfeuil & "!R2C15:R12C16,2,FALSE))"

Mais très souvent il faut mieux utiliser directement des fonctions VBA plutôt que de placer des fonctions Excel sur la feuille à l’aide de codes VBA.

Sans avoir ton fichier à disposition - afin d’essayer de voir où tu veux en venir - c’est assez compliqué de t’aider plus.

joindre un fichier

Cordialement.

Bonjour,

Merci Yvouille pour ton retour.

ci-joint le fichier sur lequel je travaille.

Encore merci

Cordialement


Josef a écrit :

Bonjour,

Merci Yvouille pour ton retour.

ci-joint le fichier sur lequel je travaille.

Encore merci

Cordialement

J'ai oublié le fichier.

Le voilà

7fichier-v1.rar (44.25 Ko)

Salut,

Tu as surement loupé l'étape 4 Ton fichier n'a pas été joint.

Tu pourrais déjà me dire si tu as testé mon bout de code !

A te relire.

Re: Yvouille

j'ai essayé ta proposition mais ça bloque lorsque veux choisir la feuille objet de la comparaison.

je sais pas qu'est ce que j'ai raté mais il reste bloquer sur InputBox("Veuillez entrer le nom de la feuille objet de la comparaison").

Salut,

Je ne peux pas ouvrir ton fichier .rar sur le PC du travail et peut-être pas non plus ce soir à la maison.

Si un fichier est trop gros, essaie d'abord de le compresser, de supprimer des pages inutiles, de ne laisser que les 10 lignes utiles à la démontration du problème sur les 10'000 de base, etc.

Si ça ne passe toujours pas, utilise le site CJoint http://www.cjoint.com/

A te relire.

c joint 2013

Re:

ci joint le fichier allégé,

Cordialement

13fichier-v2.rar (46.44 Ko)

Salut,

Ta demande est quand même un peu tordue

Tout d’abord tu ne présentes pas la même macro dans ton premier message (tu as des formules ‘FormulaR1C1’) et dans ta macro actuelle (où il y a des formules ‘FormulaLocal’ et des ‘Formula’)

Ensuite, tu as dans ta macro l’exportation d’une feuille d’un fichier extérieur, mais comme je n’ai pas ce fichier extérieur à ma disposition, je ne peux pas effectuer les essais complets

Peut-être alors que l’une des feuilles en place dans ton fichier modèle correspond à la feuille normalement exportée par la macro, mais comment le savoir ???

Et puis pourquoi ne pas donner à chaque fois le même nom à la feuille exportée ? Quelle en est la raison ?

Soit tu apportes un peu de lumière dans cet embrouillamini, soit je vais devoir abandonner.

A te relire.

Salut Yvouille, et merci pour ton retour

c'est vrai, depuis hier j'essaie de trouver une solution pour ce problème et j'ai tenté les différentes solutions trouvées sur les forums, c'est pour cela que la macro actuelle est différente d'hier (j'ai cru que formulalocal permet de d'utiliser les formules d'excel directement en les mettant entre les guillemets mais ça marche pas)

j'ai mis en jointure à ce message 2 exmples des fichiers extérieurs.

la feuille "test1" contient les données nécessaires ou bien sur lesquelles on se base, dans la feuille créée (dans ce cas la feuille Fichier) après avoir importer le fichier, pour rechercher les valeurs qui manquent dans la colonne P.feuille fichier.

Pour le nom, j'ai besoin de renommer chaque feuille créée pour distinguer les fichiers importés et pour avoir la possibilité de faire la comparaison du fichier importé avec n'importe quelle feuille déjà existante.

J’espère que j'ai apporté un peu de lumière, n'hésites pas si tu as besoin d'autres informations.

Merci beaucoup.

Salut,

Tu as un peu de tunes à me prêter pour m’acheter un logiciel ?

capture

Cordialement.

Salut,

Si on en avait ça aurait facilité le tout

voilà le fichier :

Merci pour ton effort

Merci d'être passé par le site CJoint, mais c'est toujours un fichier .rar

capture

Salut,

Voilà 2 fichiers en txt :

: fichier 1

: Fichier 2

Re,

Normalement la modification que j’ai apportée à ta macro dans le fichier ci-joint devrait correspondre à ton attente.

Je l’ai fait d’une manière un peu spéciale pour bien te montrer que ma modification de code apportée ‘à l’aveugle’ le 20 avril n’était pas si mauvaise

En effet, selon le code que tu avais présenté le même jour Cells(i, "P").FormulaR1C1 = "=IF(ISERROR(VLOOKUP(nomfeuil!RC[-1],nomfeuil!R2C15:R12C16,1,FALSE))=TRUE,""Faux"",VLOOKUP(nomfeuil!RC[-1],nomfeuil!R2C15:R12C16,2,FALSE))", ma proposition ci-après aurait été exacte : Cells(i, "P").FormulaR1C1 = "=IF(ISERROR(VLOOKUP(" & nomfeuil & "!RC[-1]," & nomfeuil & "!R2C15:R12C16,1,FALSE))=TRUE,""Faux"",VLOOKUP(" & nomfeuil & "!RC[-1]," & nomfeuil & "!R2C15:R12C16,2,FALSE))"

Mais en travaillant ton fichier, j’ai vu que tu avais fait une erreur à ce niveau-là : IF(ISERROR(VLOOKUP(nomfeuil!RC[-1] car tu recherches ainsi la valeur d’une autre feuille que celle sur laquelle sont inscrite par macro les formules. Ce passage corrigé aurait dont dû être selon ton code erroné IF(ISERROR(VLOOKUP(RC[-1] (référence à la feuille elle-même par défaut) et moi, au lieu de te proposer le bout de code IF(ISERROR(VLOOKUP(" & nomfeuil & "!RC[-1] , je t’aurais proposé IF(ISERROR(VLOOKUP(RC[-1].

Donc si tu compares le code ci-dessous – placé dans le fichier ci-joint – et mon code du 29 avril, tu vois qu’il n’y a que cette référence à la fausse feuille qui change.

Dim nomfeuil As String
nomfeuil = onglet
For i = 2 To NbLignes
    Cells(i, "P").FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC[-1]," & nomfeuil & "!R2C15:R12C16,1,FALSE))=TRUE,""Faux"",VLOOKUP(RC[-1]," & nomfeuil & "!R2C15:R12C16,2,FALSE))"
Next i

Parmi les bizarreries nécessaires à permettre la comparaison entre mon ancien et mon nouveau code, il y a cette ligne nomfeuil = onglet qui transforme ta nouvelle dénomination de variable en ton ancienne dénomination de la même variable. Par la suite, tu peux bien entendu choisir l'une ou l'autre dénomination.

A te relire.

NB : D’autres passages de ton code fonctionnent mais mériteraient d’être corrigés.

NB bis : Je ne comprends pas que tu t’entêtes à vouloir passer tes fichiers par CJoint alors qu’ils ne dépassent pas la taille de 300 Ko et qu’ils peuvent donc tout à fait être placés avec les moyens du Forum, tel que je te l’ai indiqué le 29 avril, ce qui serait plus simple pour les deux parties.

8fichier-v2.xlsm (202.00 Ko)

Salut Yvouille,

Je te remercie énormément, en effet la macro maaaaaaaaaarche correctement.

Mes respects et sincères remerciement.

PS : je suis débutant dans VBA et c'est très encourageant de trouver des gens comme toi pour aider à apprendre.

Rechercher des sujets similaires à "probleme code"