Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA erreur dans une formule

3 réponses
Avatar
Pascal
bonjour
ai un soucis avec une formule en BVA
si je mets cette formule directement dans une cellule, j'ai bien la plage
b3:b1000 et e3:1000 qui est pris en compte
=SI(B6="";"";SOMMEPROD(($B$3:$B$1000=B6)*($E$3:$E$1000=E6)))

si je tape en vba:

Range("J" & PlaceLigne).FormulaLocal = "=SI(B" & PlaceLigne & "="""";""""
;SOMMEPROD(($B$3:$B$1000=B" & PlaceLigne & ")*($E$3:$E$1000=" & "E" &
PlaceLigne & ")))"

la formule fonctionne très bien mais m'indique par une petite flèche verte,
une erreur :Formule incohérente (diffèrente des autres cellules)
quand je lis la valeur de cette cellule et les autres aussi , je ne retrouve
pas dans la formule B3:B1000 E3:E1000 mais selon l'emplacement B3:B994 ou
998 etc...
question: comment bloquer B3:B1000 je pensais que le signe $ comme ceci
$B$1000 suffisait

ou alors dû à la conception même de ma routine?
en gros dans une liste de nom , je compare et j'insère une liste extérieur
de nom pour venir grossir mon fichier si un nom doit se rajouter il ajoute
en fin de liste, copie les formules adéquates et ensuite effectue un tri sur
le nom

petite idée?, moi je nage
merci
Pascal

3 réponses

Avatar
michdenis
En supposannt que PlaceLigne n'est pas égale à 0
Tu peux utiliser l'une de celles-ci...

Range("J" & PlaceLigne).Formula = "=IF(B" & PlaceLigne & _
"="""","""",SUMPRODUCT(($B$3:$B$1000¶)*($E$3:$E$1000=E" & _
PlaceLigne & ")))"

Range("J" & PlaceLigne).FormulaLocal = "=SI(B" & PlaceLigne & _
"="""";"""";SOMMEPROD(($B$3:$B$1000¶)*($E$3:$E$1000=E" & _
PlaceLigne & ")))"






"Pascal" ,com> a écrit dans le message de news:
%
bonjour
ai un soucis avec une formule en BVA
si je mets cette formule directement dans une cellule, j'ai bien la plage
b3:b1000 et e3:1000 qui est pris en compte
=SI(B6="";"";SOMMEPROD(($B$3:$B$1000¶)*($E$3:$E$1000æ)))

si je tape en vba:

Range("J" & PlaceLigne).FormulaLocal = "=SI(B" & PlaceLigne & "="""";""""
;SOMMEPROD(($B$3:$B$1000=B" & PlaceLigne & ")*($E$3:$E$1000=" & "E" &
PlaceLigne & ")))"

la formule fonctionne très bien mais m'indique par une petite flèche verte,
une erreur :Formule incohérente (diffèrente des autres cellules)
quand je lis la valeur de cette cellule et les autres aussi , je ne retrouve
pas dans la formule B3:B1000 E3:E1000 mais selon l'emplacement B3:B994 ou
998 etc...
question: comment bloquer B3:B1000 je pensais que le signe $ comme ceci
$B$1000 suffisait

ou alors dû à la conception même de ma routine?
en gros dans une liste de nom , je compare et j'insère une liste extérieur
de nom pour venir grossir mon fichier si un nom doit se rajouter il ajoute
en fin de liste, copie les formules adéquates et ensuite effectue un tri sur
le nom

petite idée?, moi je nage
merci
Pascal
Avatar
Daniel.C
Bonjour.
Je ne rencontre pas ce problème. Peux-tu poster un classeur exemple sur
www.cjoint.com ?
Cordialement.
Daniel
"Pascal" ,com> a écrit dans le message de news:
%
bonjour
ai un soucis avec une formule en BVA
si je mets cette formule directement dans une cellule, j'ai bien la plage
b3:b1000 et e3:1000 qui est pris en compte
=SI(B6="";"";SOMMEPROD(($B$3:$B$1000¶)*($E$3:$E$1000æ)))

si je tape en vba:

Range("J" & PlaceLigne).FormulaLocal = "=SI(B" & PlaceLigne & "="""";""""
;SOMMEPROD(($B$3:$B$1000=B" & PlaceLigne & ")*($E$3:$E$1000=" & "E" &
PlaceLigne & ")))"

la formule fonctionne très bien mais m'indique par une petite flèche
verte, une erreur :Formule incohérente (diffèrente des autres cellules)
quand je lis la valeur de cette cellule et les autres aussi , je ne
retrouve pas dans la formule B3:B1000 E3:E1000 mais selon l'emplacement
B3:B994 ou 998 etc...
question: comment bloquer B3:B1000 je pensais que le signe $ comme ceci
$B$1000 suffisait

ou alors dû à la conception même de ma routine?
en gros dans une liste de nom , je compare et j'insère une liste extérieur
de nom pour venir grossir mon fichier si un nom doit se rajouter il ajoute
en fin de liste, copie les formules adéquates et ensuite effectue un tri
sur le nom

petite idée?, moi je nage
merci
Pascal





Avatar
Pascal
hello,
merci pour vos interventions, je viens de constater
que en fait je compare 2 listes et complète donc ma liste initial
le phénomène se produit quand il y a suppression d'une ligne
sil y a suppression disons de 2 lignes la valeur prend 1000-2
je ne m'explique pas pour autant le signe $ qui ne fonctionne alors pas
($b$3:$b$1000) cela ne devrait rien changer même si suppression d'une ligne
entre 3 et 1000, me trompe-je?

Pour Michedenis:
merci mais c'est ce que je fait
en vba on travaille en anglais et dans cellule en français comme j'insère
une chaine dans cellule je doit le faire en français ce que je fais bien ou
je ne t'ai pas compris et m'en excuse.

Pour Daniel C : je poste pas sur Cjoint, sorry, car complexe, plusieurs
feuille indépendante, liaison etc..et mettre à disposition sur Cjoint me
ferai dévoiler des choses trop personnel.
j'ai fait donc ceci, pas propre je sais, mais cela résous mon problème en
attendant de trouver mieux,
a chaque insertion d'une nouvelle ligne, une fonction replace toutes les
valeurs de la colonne.....
For cpt = 3 To PlaceLigne
Range("J" & cpt).FormulaLocal = "=SI(B" & cpt & "="""";""""
;SOMMEPROD(($B$3:$B$1000=B" & cpt & ")*($E$3:$E$1000=" & "E" & cpt & ")))"
Next cpt
Merci à vous tous
Pascal