Remplacement lettre colonne dans une formule

Bonjour le forum,

Je voudrais écrire dans ma dernière colonne la formule suivante =SOMMEPROD(NB.SI(Pabs;F2:X2),

Pabs étant une liste.

Jusque là pas de problème. Parcontre mon problème est que la dernière colonne varie et donc j'aimerai pouvoir remplacer la dernière lettre par une variable....

Mais les variables qui me déterminent la dernière colonne me renvoie un numéro et non une lettre....

Y a t il moyen de contourner ceci avec une formulation du type "&cells(2,6)&":"&cells(2,derCol)&" (formulation qui ne fonctionne évidement pas !!)

Merci pour vos idées

Vous pouvez utiliser la fonction ADRESSE où il suffit d'entrer comme argument le chiffre et la lettre de ligne et colonne:

="F2:"&ADRESSE(2;derCol;4;1)
  • le 4 veut dire que c'est l'adresse relative (donc X2 et pas $X$2)
  • le 1 veut dire que c'est le format A1 et pas R1C1

Bonjour,

a la place de $f2:$x2 tu mets

DECALER($f$2;0;0;1;EQUIV(9^9^9;2:2;1)-COLONNE($f$2)+1)

Cdlmnt

Merci pour vos réponses mais ca bloque toujours

Excel malin du coup mon code devient

.Cells(LigDeb, ColDeb + 2).FormulaLocal "=SOMMEPROD(NB.SI(Pabs;F2:"&ADRESSE(2;derCol;4;1)&"))" j'ai une erreur de syntaxe ou parfois ADRESSE n'est pas une variable définie.....

DjiDji59430

j'arrive bien a faire écrire la formule mais du coup j'ai plus mon résultat; la formule me retourne 0

Fichier joint remplacement de la liste Pabs par Post1 Si vous pouviez jeter un œil

sub ajoutformule

Merci

12exemple.xlsm (43.84 Ko)

Re

=SOMMEPROD(NB.SI(Post1;DECALER($F1;0;0;1;EQUIV("zzz";1:1;1)-6)))

Et pourquoi tu ne poses pas ta question a partir de ton fichier ?

C'est quand plus facile que de travailler dans le noir ?

Et quelques explications du pourquoi de la chose auraient été également bienvenue.....

Je ne comprends pas le pourquoi de la plage variable

Cdlmnt

Effectivement j'ai été un peu avars en explications,

La plage est malheureusement variable car en cours d'année le nombre de colonne (d'agent) peut augmenter, donc il faut que j'efface les totaux et que je les réécrive après l'ajout de(s) colonne(s).

a quoi correspond "zzz" dans ta formule? du coup le code bloque dessus en me signalant une erreur de syntaxe ou de compilation

.Cells(LigDeb, ColDeb + 1).FormulaLocal = "=SOMMEPROD(NB.SI(Post1;DECALER($F2;0;0;1;EQUIV("zzz";1:1;1)-5)))"

Sinon la formule fonctionne lorsque je l'introduis directement dans la dernière cellule de ma ligne mais pas en vba

Merci à tous les deux vous m'avez mis sur la bonne piste j'ai trouver un petit bout de code que traduit le n° de colonne en Lettre du coup

b = Split(Columns(ColDeb).Address(ColumnAbsolute:=False), ":")(1)

avec

ColDeb = .Cells(1, Columns.Count).End(xlToLeft).Column

ColDeb est égale au numéro de ma dernière colonne

b sera alors égale à la lettre correspondant à la colonne ColDeb

alors la formule devient

=SOMMEPROD(NB.SI(Post1;F2:" & b & "2))

Et voilà le tour est joué, plus de problème de syntaxe, ou d'argument non définie. 8)

encore merci pour toutes vos idées !

A bientôt,

Si tu avais dit au début qu'il te fallait une solution en VBA, cela aurait été beaucoup plus rapide

Rechercher des sujets similaires à "remplacement lettre colonne formule"