XL 2013 Répartition montant dans un tableau (Modification code VBA)

donmunnir

XLDnaute Junior
Bonjour à tous,
dans le fichier ci-joint j'ai un code qui me permet en cliquant sur le bouton MO de l'onglet MO Qte de faire la répartition du montant entré et le résultat je l'ai sur l'onglet ODA MO

ce que je désire modifier dans le code c'est :

les valeurs de la colonne G de l'onglet ODA MO doit dépendre de la colonne L de l'onglet ODA MO comme suit :

si les valeurs de la colonne L de l'onglet ODA MO font partie de la sélection A118: A146 de longlet MO Qte alors le résultat doit être 1988 sur la cellule de la colonne G de l'onglet ODA MO. mais si ces valeurs ne font pas partie de cette séléctions alors le résulat doit être 2016

Merci d'avance
 

Pièces jointes

  • sélection.xlsm
    62.7 KB · Affichages: 41

Dranreb

XLDnaute Barbatruc
Bonjour.
En 'ODA MO'!G6, à propager sur 15 lignes :
Code:
=SI(ESTNUM(EQUIV($D6;'MO Qte'!$A$118:$A$146));1988;2016)
ou bien en VBA :
VB:
Feuil11.[G6:G20].FormulaR1C1 = "=IF(ISNUMBER(MATCH(RC4,'MO Qte'!R118C1:R146C1)),1988,2016)"
 

donmunnir

XLDnaute Junior
Bonsoir Dranreb,
merci pour ta réponse mais en copiant la ligne sur le code comme tu peux voir sur le fichier ci-joint ca na pas marché le resultat est 2016 dans toutes les ligne toute en sachant que la ligne 14,15, et 16 de l'onglet ODA MO doient contenir 1988 comme resultat

puis la ligne G17,G18,G19 e G20 contiennet 2016 alors que la dernière ligne du tableau est la ligne 16 vu que la tableau est variable est depend des valeurs qu'on mets dans l'onglet MO Qte

ensuite la formule ne doit pas être affiché dans les cellules mais juste le résultat soit 1988 soit 2016
j'ai vu aussi que ta formule depend de la colonne D alors qu'elle doit dependre de la colonne L
 

Pièces jointes

  • sélection.xlsm
    63 KB · Affichages: 26

Dranreb

XLDnaute Barbatruc
Corrigez comme ça en remplaçant le "?" par une expression représentant le nombre de lignes à garnir :
VB:
With Feuil11.[G6].Resize(?)
  .FormulaR1C1 = "=IF(ISNUMBER(MATCH(RC12,'MO Qte'!R118C1:R146C1)),1988,2016)"
  .Value = .Value: End With
Vous l'avez bien quelque part dans cette macro ce nombre de lignes je suppose.
 

donmunnir

XLDnaute Junior
c'est exactement ce que je voulais maintenant il reste un petit problème comme vous pouvez voir sur le fichier ci-joint que j'ai mis à jour avec le dernier code
c'est que dans la colonne G de l'onglet ODA MO rien ne doit s'afficher après la ligne de fin de tableau qui est dans ce cas 16...
si je change a nouveau des informations dans la colonne Q de l'onglet MO Qte et la fin de tableau de l'onglet ODA devient par exemple la ligne 26...a partir de G27 toutes les autres cellules doivent être vide
 

Pièces jointes

  • sélection.xlsm
    63.7 KB · Affichages: 38

gosselien

XLDnaute Barbatruc
Bonjour matinal;

la ligne du haut est pareille à celle du bas mais LAST ne change pas et est utilisé plus loin

last = .Cells(65536, 18).End(xlUp).row 'dernière ligne non vide en colonne R
N = .Cells(65536, 18).End(xlUp).row 'dernière ligne non vide en colonne R
...
...
...
With Feuil11.[G6].Resize(last - 6) ' dernière - la 6e qui est la 1ére en jaune colonne G

P.
 

Dranreb

XLDnaute Barbatruc
Voilà, comme ça par exemple. Mais j'y comprend pas grand chose à tout ça :
Dans cette colonne 18, soit R, il y a marqué "Texte (facultatif)" en R4. Alors ça n'ira pas jusqu'à la fin si les dernières lignes ne sont pas renseignées. Par ailleurs ça commence à la ligne 6. Il me semble qu'il faut donc retrancher les 5 lignes qui précèdent et non pas 6.
Quand même étonnant que le demandeur n'ait pas déjà cette information quelque part dans une variable de sa macro…
Ce ne serait pas N par hasard ? Auquel cas il suffirait de prendre With Feuil11.[G6].Resize(N - 5)
 
Dernière édition:

donmunnir

XLDnaute Junior
Bonjour,
en mettant ce code ca na pas marché j'ai 2016 comme résultat dans toutes les cellules de la colonne G

With Feuil11.[G6].Resize(N - 5)
.FormulaR1C1 = "=if(isnumber(match(rc12,'MO Qte'!R118c1:R146c1)),2016,1988)"
.Value = .Value: End With
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Si ça donnait le bon résultat sur les N-5 1ères lignes quand vous mettiez 100, il n'y a pas de raison que ça donne un résultat différent sur ces lignes là en mettant N-5.
Pourquoi ne laissez vous pas la formule en majuscules ?
 

Discussions similaires

Réponses
12
Affichages
397
Réponses
5
Affichages
416

Statistiques des forums

Discussions
312 492
Messages
2 088 902
Membres
103 982
dernier inscrit
krakencolas