XL 2013 gigigg

Dranreb

XLDnaute Barbatruc
Prc n'étant ni déclaré ni initialisé c'est un Variant contenant Empty. Alors la valeur par défaut que vous suggérez est 0.
Ensuite vous n'utilisez nulle part cette variable prc
Pourquoi n'adoptez vous pas le système des deux WorkSheet FSrc et FCbl comme dans l'autre code, ça ne vous plaisait pas ? Ça me semblait pourtant plus simple…
À mon avis vous auriez intérêt à faire menu Développeur, groupe Code, Enregistrer une macro.
Pendant que ça enregistre, dupliquez la feuille puis apportez y les modifications appropriées. Ça vous donnera un brouillon de ce qu'il faut faire, qu'on pourra optimiser en y rendant variable ce qui devra le devenir.
Enfin c'est surtout pour les formules que vous voulez mettre, que je ne connais pas. Parce que le reste c'est comme dans l'autre code. Faites en de plus simples qu'actuellement, parce que dans la macro on aura le nom de la feuille source à concaténer dans les formules.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
E c'est la 5ième colonne. Y retrancher 20 colonne mènerait bien avant la A !
Ensuite la variable ECHEANCIER! n'est pas initialisée et E derrière n'est pas bon..
En revanche la variable prc n'est pas connue d'Excel. C'est sa valeur que vous devez concaténer dans la formule.
Ne serait-ce pas ça qu'il faudrait par hasard ? :
VB:
FCbl.[E30].FormulaR1C1 = "='" & FSrc.Name & "'!RC*" & Prc & "/100"
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Pourquoi -5 ? C'est toujours une de moins que la A. C'est quelle colonne de la feuille SIT-01 que vous voulez récupérer ?
Mon dernier edit du poste précédent considérait que c'est la E. Donc on ne précise rien puisque c'est la même que celle de la formule.
 

Dranreb

XLDnaute Barbatruc
Si c'est une cellule de la feuille ECHEANCIER qu'il faut prendre c'est
VB:
FCbl.[E30].FormulaR1C1 = "='ECHEANCIER'!R" & Right$(FCbl.Name, 2) + 14 & "C5*" & Prc & "/100"
J'ai eu du mal à comprendre ça avec les formules existantes !

Vous remarquerez que lorsqu'on spécifie directement un numéro de ligne ou de colonne derrière "R" ou "C" en notation R1C1 il s'agit d'une référence absolue, qui se traduit donc par un "$" devant en notation A1.
Pourquoi ne mettriez vous pas ça, puisque j'ai trouvé apparemment le numéro de situation en C26
VB:
FCbl.[E30].FormulaR1C1 = "=OFFSET(ECHEANCIER!R14C5,R26C3,0)*" & Prc & "/100"
Pour peu que vous notiez aussi le pourcentage dans une autre cellule, ça deviendrait vite une formule qu'on n'aurait plus besoin de changer.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Dans ce cas vous pouvez faire
VB:
FCbl.[E30].Value = Feuil1.[E15:E38].Rows(NumSit).Value * Prc / 100
Ou mieux :
VB:
FCbl.[E30].Value = Feuil1.Cells(NumSit + 14, "E").Value * Prc / 100
Avec Dim NumSit As long défini au départ: NumSit = Right$(FSrc.Name, 2) + 1 juste avant de l'utiliser déjà pour FCbl.Name = "SIT-" & Format(NumSit, "00")

Et Feuil1 le nom dans la rubrique Microsoft Excel Objets de l'explorateur de projet de l'objet Worksheet qui représente la feuille "ECHEANCIER". Et que vous pourriez rebaptiser FÉch par exemple d'ailleurs dans la fenêtre de propriétés.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Oui bien sûr, ça aurait juste évité une répétition, et donc un recalcul, de l'expression Right$(FSrc.Name, 2) + 1 si vous l'aviez mis plus haut, juste avant FCbl.Name = etc.
Mais dans la ligne que vous avez copié j'avais oublié: "SIT-" & Format(NumSit, "00")

Je répondais au poste précédent, mais vous avez trouvé tout seul.
Là je ne suis plus sûr de vous suivre. Si vous avez besoin dans l'expression d'une valeur d'une cellule de la feuille précédente c'est FSrc.[etc. ].Value
 
Dernière édition:

BoixosNois

XLDnaute Nouveau
je m'explique :
si je travaille avec le même code et en passant a SIT-03 je mets 40% comme pourcentage mais le problème c'est que le code va prendre 40% de la cellule E17 onglet echeancier chose qui est faux
moi je veux qu'il prenne 40% de E16 la même que SIT-02, car dans sit-02 on a pris juste 36% alors il faut qu'on incrémente jusqu’à a ce qu'on arrive à 100%,

ensuite dans SIT-04 en mettant 24% il prend ce pourcentage de la même cellule E16 onglet echeancier
mais dans SIT-05 en saisissant un pourcentage le code le prend automatiquement de la cellule E17 onglet echeancier puisque on est déjà arrivé à 100% du montant de la cellule E16 (36% , 40% et 24%) c'est à dire il faut ventiler le montant de E16 sur les situations qui vont s'ajouter jusqu'a a ce qu'on arrive à 100% et après on passe a E17
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Alors, là… je ne sais quoi faire. Surtout qu'à première vue on ne garde aucune trace nulle part de ce qui avait été pris comme ligne dans la situation d'avant. Ni du pourcentage appliqué d'ailleurs. Je n'ai plus le classeur sous les yeux. J'ai la vague intuition qu'on pourrait élaborer quelque chose à partir des cumuls des sommes reproduites jusqu'à la feuille précédente et du cumul des lignes de la feuille ECHEANCE. Mais c'est pareil, il faudrait les noter quelque part. Si on ne peut pas noter les infos dans des cellules on pourrait à la limite les noter dans des propriétés Public de chaque feuille.
Si attendez, je crois qu'on a bien l'ancien cumul des sommes. Si on avait aussi le cumul des échéances ou pourrait chercher avec WorksheetFunction.Match la ligne ou il dépasse l'ancien cumul. À étudier…
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Ah oui si on peut faire comme ça, ça va. On se ramène au cas où le numéro de ligne correspond au numéro de situation.
Mais ne faudrait il pas enregistrer plutôt la différence entre le montant échéance et le montant situation dans la ligne échéance créée derrière pour la fois d'après ?
Comme ça le pourcentage s'appliquerait au restant. Ce qui reviendrait je crois au cumul des pourcentages successifs.
 

Discussions similaires

Réponses
7
Affichages
136

Statistiques des forums

Discussions
311 720
Messages
2 081 912
Membres
101 837
dernier inscrit
Ugo