Copier des valeurs avec plusieurs conditions
bonjour
pourriez-vous m'aider svp
malgré toutes mes tentatives je n y parvient pas avec des fonction si et ou bcp trop longue.
merci
Bonjour,
Une participation à vérifier bien sûr et sans doute à améliorer pour débloquer le sujet ....
J'ai modifier la colonne c de l'onglet feuil2 il me semble qu'elle se calcule en fonction de la largeur
En colonne G
=INDIRECT("TARIF!"&ADRESSE(EQUIV(B3;TARIF!$B$6:$B$14)+5;EQUIV(D3;TARIF!$D$5:$J$5)+3))celà me semble faire le travail
@+
Bonjour
merci pour votre aide mais malheureusement ca n' a pas l effet que j esperais.
mais j ai quelques difficultes a expliquer le resultat que je veux obtenir
la feuille tarif ne change jamais ou tres rarement 1 fois d ans l annee
Sur la feuille 2 je dois remplir les colonnes A,B,C,D et E. Les colonnes F et H ont une formule qui ne change jamais .
Les cellules de la colonne G qui me posent un gros probleme doivent etre renseignées par la Feuille TARIF selon les criteres suivants
largeur epaisseur et longueur (colonnes B,C et D)
quelques exemples
une section de 12 de largeur sur 16 d'epaisseur et d'une longueur de 3m doit avoir pour tarif 193.9.
une section de 16 de largeur sur 12 d'epaisseur et d'une longueur de 3m doit avoir le meme tarif.
c'est la plus grande valeur de section (16) qui determine la ligne de tarif
une section de 12 de largeur sur 12 d'epaisseur et d'une longueur de 5.5m doit avoir pour tarif 155.9 .
une exception cependant si l'une des valeurs largeur ou epaisseur est inferieur à 10 alors la section la plus petite l' emporte.
le tarif se fera sur la ligne 6 (moins de 10) en fonction de la longueur de la pièce .
exemple une section de 32 de largeur sur 8 d'epaisseur et d'une longueur de 4.2m doit avoir pour tarif 104.9.
meme tarif pour une section de 8 de largeur sur 32 d'epaisseur et d'une longueur de 4.2m soit 104.9.
je ne sais pas si je suis parvenu à etre plus clair dans mes explications
merci par avance pour toute votre precieuse aide
cdl
Bonsoir,
Je n'avais pas tout compris.....
Pour prendre dans le tarif la valeur maxi entre B3 et C" on peut sans doute modifier la formule ainsi
=INDIRECT("TARIF!"&ADRESSE(EQUIV(MAX(B3;C3);TARIF!$B$6:$B$14)+5;EQUIV(D3;TARIF!$D$5:$J$5)+3))Pour prendre en compte l'exception du <10, il faudrait mettre un =si en plus..
du genre
=SI(MIN(B3;C3)>10;INDIRECT("TARIF!"&ADRESSE(EQUIV(MAX(B3;C3);TARIF!$B$6:$B$14)+5;EQUIV(D3;TARIF!$D$5:$J$5)+3));INDIRECT("TARIF!"&ADRESSE(EQUIV(10;TARIF!$B$6:$B$14)+5;EQUIV(D3;TARIF!$D$5:$J$5)+3)))A vérifier.
Regarde au besoin dans l'onglet "TARIF" en C16:D23 la décomposition de mon raisonnement.
@+
merci bernard22
je viens de tester la premiere ligne de code mon souci est lorsque je rentre 6m il ne m affiche pas le prix de 195.9 et non 196.9
en fait à 5.9 c'est le bon tarif 195.9 à 6 on doit changer de colonne.
mis a part ce petit bug ca a l'air de fonctionner bravo .
l exception n'a pas l air de fonctionner ...
j ai essayé avec un si et mais je pense que j ai beauoup a apprendre sur excel
cdl
bonsoir mferrand
c'est vraiment difficile excel !!!
meme avec votre aide et celle de bernard22 !!
j'ai vraiment du mal a parvenir à mes fins
cdl
Bonsoir,
Il y avait un sujet en cours sur lequel j'ai fourni un fichier modèle (le tien) fonctionnel. Laissé sans réponse et abandonné par toi.
Je signale juste une façon de se comporter !
Désolé mais le tableau tarif a été modifié et ne correspondait plus .
J ai teste votre code mais ça ne fonctionnait pas malheureusement
Je pense que mes explications ne devaient pas être assez claires hier donc inutile de se fâcher !
Bernard22 était très proche de la solution il y avait juste un petit bug lors du traitement des chiffres entiers et sur l exception à gérer voir plus haut ...donc si vous êtes enclein a m aider grace a votre expertise vous en remercie sinon tant pis pour moi.
Et si j'avais voulu laisser tomber mon projet je n'y aurais pas passer autant de temps et je ne crois pas vous avoir manqué de respect en aucune façon et suis rester toujours reste très correct
Cdl
et suis rester toujours reste très correct
Oui ! En disparaissant et en ouvrant un autre sujet sur la même question !
Aucune importance, mon intervention est terminée.
Bonjour
merci bernard22
je viens de tester la premiere ligne de code mon souci est lorsque je rentre 6m il ne m affiche pas le prix de 195.9 et non 196.9
en fait à 5.9 c'est le bon tarif 195.9 à 6 on doit changer de colonne.je pense que le pb vient d'un inférieur ou egal ou quelquechose comme ca.
mis a part ce petit bug ca a l'air de fonctionner
cdl
Bonjour,
Petites modifications.
Regarde sur l'onglet "Tarif". il y a les étapes de mon raisonnement.
En ligne 18 on trouve le maxi épaisseur/largeur G18 avec l'exception <10
En ligne 20 la fonction EQUIV donne la ligne sur laquelle on trouvera le tarif (+5 par ce que ton tarif commence en ligne 4). on recherche le maxi dans la zone B6:B14 ( c'est peut-être là qu'il faut faire les ajustements si problème inférieur ou égal)
En ligne 23 on recherche la colonne sur laquelle on doit trouver le tarif (mêmes remarques que pour la recherche de la ligne)
En ligne 25 on retrouve le contenu de la cellule recherchée.
Dans la Feuil2, en G3, on retrouve tous ces élément dans la même formule.
(J'ai commencé à répondre, je n'avais pas vu que c'était un double, sinon j'aurai laissé la priorité à celui qui avait commencé, d'autant plus que mes compétences et connaissances sont infimes par rapport aux siennes. Je vais sur ce forum, pour apprendre et il me reste bien des choses à comprendre.)
Salut Bernard,
Je ne revendique aucune priorité ! La question est publique. Et si elle peut donner lieu à débat fructueux, il n'y a pas lieu de s'en chagriner !
Je mettais simplement au jour la méthode qui consiste à abandonner un fil sans réponse, ni autre signalisation, pour en ouvrir un autre, pas des plus appréciables... et qui pourrait fort bien se répéter.
Sinon je me suis sur le fil précédent plus qu'étendu en explications que l'intéressé semble avoir du mal à comprendre, que lorsqu'on cherche un intervalle dans une échelle de valeurs balisée par des paliers (ou bornes), ces paliers doivent faire partie d'un intervalle, celui du dessus ou celui du dessous, d'où <= ou >=... , ce qui conduit lorsqu'on utilise EQUIV à mettre l'échelle en ordre croissant ou décroissant selon le cas avec en dernier paramètre 1 ou -1...
Le problème n'est plus tant de formuler que de savoir comment l'intéressé définit effectivement ses intervalles.
Bon courage, et bon dimanche.
bonjour bernard
un grand merci pour ton aide j'y suis enfin parvenu grace à ta derniere reponse.
merci pour tes tableaux simples qui m'ont permis etape par etape de comprendre un peu la logique.
il est vrai que j ai fait 2 demandes mais la premiere personne ne semblait pas comprendre mon niveau sur excel qui est pas loin du
zero (lol) donc avec un jargon hyper pro et une formule plus longue que mon bras comment veux tu que je m'en sorte .
d'ou ma deuxieme demande ...et tant pis si ca l'a vexé il n'a qu'a savoir se mettre au niveaux de ses interlocuteurs se vieux bougon (lol) bref tu as su "vulgariser" tout cela pour que je comprenne à mon petit niveau
encore un grand merci
Bonjour La couture, bonjour le forum
Voici une tentative en vba
Sub largeur()
dl = Sheets("Feuil2").Range("F" & Rows.Count).End(xlUp).Row
For j = 3 To dl
If Sheets("Feuil2").Cells(j, "B") <> "" Then
If Sheets("Feuil2").Cells(j, "C") <> "" Then
If Sheets("Feuil2").Cells(j, "D") <> "" Then
If Sheets("Feuil2").Cells(j, "E") <> "" Then
If Sheets("Feuil2").Cells(j, "D") < 2 Then
c = 3
End If
If Sheets("Feuil2").Cells(j, "D") >= 2 And Cells(j, "D") <= 2.9 Then
c = 4
End If
If Sheets("Feuil2").Cells(j, "D") >= 3 And Cells(j, "D") <= 3.9 Then
c = 5
End If
If Sheets("Feuil2").Cells(j, "D") >= 4 And Cells(j, "D") <= 4.9 Then
c = 6
End If
If Sheets("Feuil2").Cells(j, "D") >= 5 And Cells(j, "D") <= 5.9 Then
c = 7
End If
If Sheets("Feuil2").Cells(j, "D") >= 6 And Cells(j, "D") <= 6.9 Then
c = 8
End If
If Sheets("Feuil2").Cells(j, "D") >= 7 Then
c = 9
End If
If Sheets("Feuil2").Cells(j, "B") < 10 Then
i = 6
End If
If Sheets("Feuil2").Cells(j, "B") >= 10 And Cells(j, "B") <= 15 Then
i = 7
End If
If Sheets("Feuil2").Cells(j, "B") >= 16 And Cells(j, "B") <= 19 Then
i = 8
End If
If Sheets("Feuil2").Cells(j, "B") >= 20 And Cells(j, "B") <= 24 Then
i = 9
End If
If Sheets("Feuil2").Cells(j, "B") >= 25 And Cells(j, "B") <= 30 Then
i = 10
End If
If Sheets("Feuil2").Cells(j, "B") >= 30 And Cells(j, "B") <= 34 Then
i = 11
End If
If Sheets("Feuil2").Cells(j, "B") >= 35 And Cells(j, "B") <= 40 Then
i = 12
End If
If Sheets("Feuil2").Cells(j, "B") >= 41 And Cells(j, "B") <= 45 Then
i = 13
End If
If Sheets("Feuil2").Cells(j, "B") >= 45.1 Then
i = 14
End If
Sheets("Feuil2").Cells(j, "G") = Sheets("TARIF").Cells(i, c)
End If
End If
End If
End If
Next
End SubBonne soirée à toutes et tous
Bonsoir,
Pas d'accord avec ton analyse.
Sur le forum les gens sont bénévoles.
Ils mettent leurs compétences au service des autres et y passent du temps.
Une des choses demandées sur le forum est de donner suite à une réponse.
Soit par un Merci... soit par une demande d'explication complémentaires
Ou dans ton cas Avertir ton interlocuteur que tu lancais une autre discussion.
Si tu savais le nombre de personnes qui abandonnent en cours ou vont sur d'autres forums
Sans donner suite, à la longue ça peut décourager et agacer.
Si tu reviens sur le forum tu verras que Mferrand est des plus compétents et que beaucoup de nous avons à apprendre de ses conseils
Pour ma part je suis content de t'avoir aidé, mais je vais étudier la proposition de jp45.
Toujours apprendre et rester humble
Bonne soirée
La couture a écrit :d'ou ma deuxieme demande ...et tant pis si ca l'a vexé il n'a qu'a savoir se mettre au niveaux de ses interlocuteurs se vieux bougon (lol)
C'est moi que tu traites de vieux bougon ?
Tu n'as même pas répondu a ton post !
Et pourtant tout fonctionnait comme tu l'avais demandé ...........