Tableau de surfaces
Bonjour
en ces temps de confinement je travaille de chez moi et où que vous soyez j'espère que vous allez bien
je suis constructeur et j'a une problématique de tableur de prix que je dois faire pour les équipes commerciales
nous modifions des plans et devons y associer un prix (surcoût ou moins-value ) en fonctions de plusieurs paramètres
j'ai 5 espaces ( rez de chaussée/étage/garage/sous-sol/auvent)
les surfaces peuvent être en moins sou en plus et doivent avoir un prix en fonction de leur transformation, agrandissement ou réduction
l'idée générale est de trouver le solde de m² non transformés et de leur appliquer là où ils se trouvent une décote de moitié prix en prenant en compte les surfaces RDC ETAGE GARAGE SOUS SOL et AUVENT
on transforme toujours la surface la plus chère en la moins chère
le solde de surface restant à déduire doit l'être à moitié prix et doit être la surface la moins chère de celles qui restent à enlever
je vous mets en PJ un tableur avec 5 exemples qui j’espère seront parlants
d'avance merci à tous ceux qui prendront de leur temps pour m'aider à trouver les bonnes formules à mettre en face de chaque espace
Bonjour,
solution via une fonction personnalisée (ilfaudrait
Function ilfaudrait(tableau As Range)
' tableau (6 lignes, 5 colonnes) : 5 colonnes,base, type,vendu,ecart,prix/m²
'
t = tableau
'tri du tableau en ordre croissant sur le prix
For i = 1 To 5
For j = i + 1 To 6
If t(i, 5) > t(j, 5) Then
For k = 1 To 5
temp = t(i, k): t(i, k) = t(j, k): t(j, k) = temp
Next k
End If
Next j
Next i
sommeecarts = Application.Sum(tableau.Range("D1:D6"))
i = 1
Do While i <= 6
oti = t(i, 4)
If sommeecarts < 0 Then
If oti < 0 Then
If sommeecarts - oti < 0 Then
sommeecarts = sommeecarts - t(i, 4)
t(i, 4) = 0
prix = oti * t(i, 5) / 2
Else
t(i, 4) = oti - sommeecarts
sommeecarts = 0
prix = (oti - t(i, 4)) * t(i, 5) / 2 + t(i, 4) * t(i, 5)
End If
Else
prix = oti * t(i, 5)
End If
Else
prix = oti * t(i, 5)
End If
sommeprix = sommeprix + prix
i = i + 1
Loop
ilfaudrait = sommeprix
End Functionà utiliser dans une cellule excel
=ilfaudrait(plagededonnées)
Bonjour
Solution PowerQuery fonctionnelle supprimée comme indiquée dans mon message de 22:25
bonjour h2so4
j'ai bien reçu votre solution sur le forum et vous en remercie mais pour moi c'est du chinois
je vous admire de savoir faire ca
où dois je écrire cette formule dans mon fichier , dans quelle cellule dois je la mettre ?
je dois vous préciser que les prix de chaque espace doit être mentionné
en colonne J par exemple
je ne dois pas avoir que la somme mais chaque prix selon chaque espace
merci de votre aide
valérie
Bonjour,
j'ai fourni le fichier avec la fonction personnalisée (qui nécessité d'autoriser les macros) et mis la formule dans les cellules en jaune de ton tableau.
la formule affiche le résultat final (prix total) mais pas les résultats intermédiaires. Si tel est le souhait, il faudra adapter la solution proposée ou prendre la solution de 78Chris qui me semble-t-il répond à ce besoin.
super
j'ai (enfin) trouvé où est la macro
j'avais fourni un tableur d'essai car le tableur initial est bcp trop lourd
puis je copier la macro telle quelle ?
et surtout pouvez vous me la mettre espace par espace svp
ensuite je saurais faire la somme de tout ca je crois !!!( on ne se moque pas )
merci bcp en tout cas
RE
Décidément la politesse doit aussi être en confinement, on ne la voit plus beaucoup ces temps-ci.
Je supprime ma solution qui donnait bien le résultat de toutes les lignes pour tous les cas testés...
cher chris 78 ,
vous semblez penser que je vous ai ignoré alors que j'ai fait de nombreux essais sur le tableur que vous m'avez renvoyé et vous en ai fait un retour en message privé dans la 1/2 heure
je suis embetée de votre message , ne l'avez vous pas recue ?
avez mes sincères excuses si je vous ai froissé et laisser croire que vos efforts n'avaient pas été appréciés
j'espère que nous ne m'en voudrez pas trop
bonne journée
RE
Non pas reçu de message d'où effectivement ma réaction
Depuis quelques semaines beaucoup de nouveaux inscrits qui ne répondent pas, cela finit par lasser surtout quand on a passé du temps pour comprendre le problème posé et y apporter une solution.
Il est plus simple de rester sur le forum que d'échanger par MP sauf accord préalable...
Bonjour,
je partage tout à fait les remarques et le ressenti de 78Chris.
voici une adaptation de la fonction personnalisée. Calcul du prix du type de pièce en fonction des données d'un tableau de ventes.
à copier dans un nouveau module VBA du classeur cible.
Function ilfaudrait(piece As String, tableau As Range)
' tableau (6 lignes, 5 colonnes) : 5 colonnes,base, type,vendu,ecart,prix/m²
'
Dim tprix(1 To 6) As Single, t, i&, j&, k&, sommeecarts As Single, prix As Single, oti As Single, temp
t = tableau
If UBound(t, 1) = 6 And UBound(t, 2) = 5 Then
'tri du tableau en ordre croissant sur le prix
For i = 1 To 5
For j = i + 1 To 6
If t(i, 5) > t(j, 5) Then
For k = 1 To 5
temp = t(i, k): t(i, k) = t(j, k): t(j, k) = temp
Next k
End If
Next j
Next i
' calcul du prix par type de pièce
sommeecarts = Application.Sum(tableau.Range("D1:D6"))
i = 1
Do While i <= 6
oti = t(i, 4)
If sommeecarts < 0 Then
If oti < 0 Then
If sommeecarts - oti < 0 Then
sommeecarts = sommeecarts - t(i, 4)
t(i, 4) = 0
prix = oti * t(i, 5) / 2
Else
t(i, 4) = oti - sommeecarts
sommeecarts = 0
prix = (oti - t(i, 4)) * t(i, 5) / 2 + t(i, 4) * t(i, 5)
End If
Else
prix = oti * t(i, 5)
End If
Else
prix = oti * t(i, 5)
End If
tprix(i) = prix
i = i + 1
Loop
For i = 1 To 6
If t(i, 2) = piece Then ilfaudrait = tprix(i): Exit Function 'renvoie le prix calculé pour la pièce demandée
Next i
ilfaudrait = "erreur : type piece " & piece & " non trouvée"
Else
ilfaudrait = "erreur : tableau doit avoir 6 lignes et 5 colonnes (base, type piece, vendu,ecart et prix/m²)"
End If
End Functionla fonction s'utilise ainsi
=ilfaudrait(typepiece,tableau)où typepiece correspond à l'un des types suivants : RDC ETAGE GARAGE SOUS SOL ABRI et AUVENT et où le tableau reprend sur 6 lignes (1 ligne par type) les infos base, type piece, vendu,ecart et prix/m²
exemple d'utilisation dans le fichier joint.
RE
je partage tout à fait les remarques et le ressenti de 78Chris.
voici une adaptation de la fonction personnalisée...
Merci
Belle fonction
J'avais amélioré le PowerQuery (plus besoin des totaux) mais le grand avantage de la fonction est de rester dans le tableau initial.
Le demandeur aurait tout intérêt à créer un xltm pour créer ses tarifs avec la fonction toujours dispo.
bonjour
merci pour ces réponses messieurs
avec mes plus sincères excuses de vous avoir blessé 78Chris... vraiment !
je ne sais pas comment vous faire comprendre que je suis en totale admiration devant ce que vous faites pour moi et pour la communauté
je suis tellement nulle dans ce domaine
je vais faire des essais sur la solution de h2so4 cet am
mes respects pour cette aide précieuse dont je ne manquerais pas de vous donner des nouvelles pour le suivi
bonne journée et courage pour le confinement
valérie
RE
avec mes plus sincères excuses de vous avoir blessé 78Chris... vraiment
A priori c'est un malentendu donc on oublie.
Bons test
bonjour
J’espère que vous allez bien tous les 2...
ça y est j'ai fait mes essais et çà fonctionne nickel
merci infiniment
bonne fin de journée