Erreur Syntaxe L & LigCritère1 : L & LigCritère2

Résolu/Fermé
Stephxx Messages postés 26 Date d'inscription mercredi 17 juin 2015 Statut Membre Dernière intervention 31 août 2015 - Modifié par Stephxx le 7/07/2015 à 11:19
Stephxx Messages postés 26 Date d'inscription mercredi 17 juin 2015 Statut Membre Dernière intervention 31 août 2015 - 9 juil. 2015 à 14:56
Bonjour,
Après avoir calculé deux numéros de ligne (PremLig2 et PremLig3) je souhaite utiliser ces valeurs dans une FormulaLocal mais impossible de trouver la bonne syntaxe:

Range("I" & PremLig2).FormulaLocal = "=SI(ESTNA(J" & PremLig2 & ");0;SI(J " & PremLig2 & "<>"""";0;SI(OU(G " & PremLig2 & "<>G " & PremLig2 - 1 & ";F " & PremLig2 & "<>F " & PremLig2 - 1 & ";J1<>"""");MAX($I$& " & PremLig2 - 1 & ":$I " & PremLig2 - 1 & ")+1;I" & PremLig2 - 1 & ")))"


Range("I" & PremLig2).AutoFill Destination:=Range("I" & PremLig2 ":I" & PremLig3 - 1)

Avez vous des idées ? <3

2 réponses

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 9/07/2015 à 13:39
Essaie d'avoir un peu plus de méthode.

1) colle ta formule dans VBE :
= "=SI(NON(ESTNA(G2));SI(I2<>0; A2&"-"&I2&":"&NB.SI($I$1:$I1;$I2)+1);0)"


2) double toutes les " internes :
= "=SI(NON(ESTNA(G2));SI(I2<>0; A2&""-""&I2&"":""&NB.SI($I$1:$I1;$I2)+1);0)"


3) remplace une partie à changer par " & & " (2 espaces entre & &), ici le 1er 2 :
= "=SI(NON(ESTNA(G" &  & ">));SI(I2<>0; A2&""-""&I2&"":""&NB.SI($I$1:$I1;$I2)+1);0)"


4) insère ta variable ou ta formule entre les 2 & &
= "=SI(NON(ESTNA(G" & PremLig2 + 1 & "));SI(I2<>0; A2&""-""&I2&"":""&NB.SI($I$1:$I1;$I2)+1);0)"


5) tu valides pour voir si tu n'es pas trompé et tu fais les suivants pareil, un par un.

Et si tu as encore un pb ou si tu veux contrôler la chaine fabriquée :
- met un Stop devant ou fait un pas à pas (F8) jusque là
- sélectionne l'ensemble de ta formule avec les " " externes, fait glisser l'expression dans la fenêtre Espions.
- là tu peux y lire ce que tu as fabriqué pour comparer avec ce que tu attendais.
Tu peux y copier la chaine fabriquée pour la coller dans une cellule pour contrôler ou faciliter la comparaison.

Dis-moi si tu t'en sors mieux.
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
1
Stephxx Messages postés 26 Date d'inscription mercredi 17 juin 2015 Statut Membre Dernière intervention 31 août 2015
9 juil. 2015 à 14:56
Merci Eric,
je ne connaissais pas la fenêtre espion, j'ai découvert vba il y a 3 semaines et je n'ai pas encore toutes les ficelles.
Encore un grand merci à tous les contributeurs !!
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 7/07/2015 à 12:03
Bonjour,

Tu as mis des espaces indésirables derrière chaque lettres de colonne, plus d'autres erreurs diverses.
Une seule ligne suffit :
Range("I" & PremLig2).Resize(PremLig3 - PremLig2 + 1).FormulaLocal = "=SI(ESTNA(J" & PremLig2 & ");0;SI(J" & PremLig2 & "<>"""";0;SI(OU(G" & PremLig2 & "<>G" & PremLig2 - 1 & ";F" & PremLig2 & "<>F" & PremLig2 - 1 & ";J1<>"""");MAX($I$" & PremLig2 - 1 & ":$I" & PremLig2 - 1 & ")+1;I" & PremLig2 - 1 & ")))"


La prochaine fois met en plus la formule en clair, là on ne sait pas ce que tu veux obtenir exactement. Et utilise l'outil <> pour mettre en forme le code.
Ca aide ceux qui t'aident
eric


En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
0
Stephxx Messages postés 26 Date d'inscription mercredi 17 juin 2015 Statut Membre Dernière intervention 31 août 2015
7 juil. 2015 à 18:48
Merci,

j'ai pu avancer et terminer mon projet.
J'avais cherché l'outil pour mettre en format code mais je ne l'avais pas trouvé.

Steph
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
7 juil. 2015 à 19:51
C'est en haut à droite du message que tu édites.
0
Stephxx Messages postés 26 Date d'inscription mercredi 17 juin 2015 Statut Membre Dernière intervention 31 août 2015
Modifié par Stephxx le 9/07/2015 à 12:03
pourrais tu m'aider sur cette petit variante:

Range("K" & PremLig2 + 1).Resize(PremLig3 - PremLig2 - 1).FormulaLocal = "=SI(NON(ESTNA(G" & PremLig2 + 1 & "));SI(I" & PremLig2 + 1 & "<>0; A"& PremLig2 + 1 &" ""-""  & I "& PremLig2 + 1 &" "":"" "&NB.SI($I$" & PremLig2 & ":$I" & PremLig2) + 1 &";I"& PremLig2 + 1 &");0);0)"


en zoomant sur le problème de syntaxe:

PremLig2 + 1 &" ""-""  & I "& PremLig2

et
PremLig2 + 1 &" "":"" "&NB.SI($I$" & PremLig2


Pb exprimé en français: quelle est la syntaxe quand on veut inclure dans les critères des signes ex: "-" et ":" ?
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 9/07/2015 à 11:42
Bonjour,

Déjà ta formule est en erreur quand je la colle dans une cellule et tu mets 2 formules différentes. Un peu plus de rigueur dans tes questions stp.
Au début ça sera plutôt estna(G2) mais il y a encore des erreurs derrière...
Fais-le avec une formule correcte que tu as testée.

eric
0
Stephxx Messages postés 26 Date d'inscription mercredi 17 juin 2015 Statut Membre Dernière intervention 31 août 2015
Modifié par Stephxx le 9/07/2015 à 12:05
Bonjour Eric,

voici ce que donne la formule en K2: avec PremLig2 = 1

=SI(NON(ESTNA(G2));SI(I2<>0; A2&"-"&I2&":"&NB.SI($I$1:$I1;$I2)+1);0)


Ce qui me pose problème ce sont les "-" et ":" à incorporer dans le code vba. C'est de la syntaxe mais je n'arrive pas à trouver malgré de nombreux essais.
Je fais mon maximum pour la clarté des question, excuse.

Steph
0