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

Résolu
Stephxx Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -  
Stephxx Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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   Statut Membre Dernière intervention  
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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   Statut Membre Dernière intervention  
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
C'est en haut à droite du message que tu édites.
0
Stephxx Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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   Statut Membre Dernière intervention  
 
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