Importer une fonction Excel vers Google Sheets

Bonjour à tous,

Il y a quelques mois j'avais eu l'aide d'une personne pour créer une fonction personnalisé pour Excel.
Aujourd'hui j'aimerais l'importer à Google Sheets pour partager via le Drive mon fichier.

Voici la fonction complète de VBA :

Function Prix(Impression, Spec, Qté)
Dim Qty(), Price(), N As Integer, L As Integer, i As Integer
    Prix = 0
    If Impression = "" Or Spec = "" Then Exit Function
    N = 0
    DerLig = Range("Feuil1!B65500").End(xlUp).Row
    tablo = Range("Feuil1!B3:E" & DerLig)
    For L = 1 To UBound(tablo)
        If tablo(L, 1) = Impression And tablo(L, 2) = Spec Then
            ReDim Preserve Qty(N)
            ReDim Preserve Price(N)
            Qty(N) = tablo(L, 3)
            Price(N) = tablo(L, 4)
            N = N + 1
        End If
    Next L
    For i = 0 To UBound(Qty)
        If Qté < Qty(0) Then Prix = Price(0)
        If Qté >= Qty(UBound(Qty)) Then Prix = Price(UBound(Qty))
        If Qté >= Qty(i) Then Prix = Price(i)
    Next i
End Function

J'ai cru comprendre que les fonctions n'étaient pas les mêmes entre VBA et Google Script mais je ne comprends pas comment la transformer pour qu'elle soit compatible avec Google Sheets.

Merci d'avance de votre aide

Bonjour,

en effet, il n'y a pas de traduction directe car derrière les feuilles qui se ressemblent, les "moteurs" de calculs sont différents

  • au niveau des langages, on a d'un côté un langage propriétaire VBA, de l'autre un langage plus universel car il prend sa source dans le javascript
  • mais surtout, bon nombre de codes sont inutiles dans GSheets qui utilise des fonctions simples et puissantes comme query, arrayformula, unique ,filtre (son équivalent serait PowerQuery)

peux-tu mettre un lien vers ton projet sur GSheets https://www.sheets-pratique.com/fr/cours/partage et exprimer ton besoin de façon littérale

Merci pour ton explication Steelson !

Alors pour partager mon projet ça ne va pas être possible directement car il comprend des données confidentielles.

Je vais recréer un exemple qui reprend les grandes lignes et partager celui-ci

Voici un fichier très simplifié de mes recherches avec d'autres données.

Il s'agit d'une base de donnée avec des produits et des spécificités (Spec), dans cet exemple on retrouve deux produit "Voiture" et "Camion". Chacun dispose de différentes Spec (couleur) qui font varier le prix.

L'utilisateur choisi le produit voulu via une liste simple des produits.

Ensuite il faut choisir la Spec de ce produit. Sous Excel afficher une liste en fonction d'une autre se faisait via "=INDIRECT(cellule du produit)". En cherchant sous GSheets il faudrait utiliser la fonction "=FILTER" pour afficher les possibilités sur une feuille et ensuite les afficher sous forme de liste avec : Validations des données.
Or le problème est qu'il faudrait afficher "x" liste de Spec en fonction du produit choisi.(Dans mon fichier d'origine je compte plus de 50 Spec différentes)

Ensuite l'utilisateur choisi la quantité voulu pour les produits. Un calcul est fait avec une recherche par palier pour chaque produit et sa Spec.
C'est ici qu'une fonction "Prix" avait été développé dans VBA pour réussir à sélectionner en fonction du Produit, Spec et de la quantité voulu.

J'espère avoir été le plus clair possible, voici le lien du GSheet : https://docs.google.com/spreadsheets/d/1qN8qqO5av1loW4eFeRHV8P1Ky8N-3Gi2PNQP4Xe5074/edit?usp=sharing

Merci

J'ai fait la validation des données, c'est vrai c'est un peu plus complexe que INDIRECT

J'ai détaché cela dans une autre feuille

Je ferai un topo un jour

Sauf erreur de ma part

=IFERROR(min(query($B$2:$E$23;"select E where B='"&G3&"' and C='"&H3&"' and D<="&K3&" ";0));0)
+IFERROR(min(query($B$2:$E$23;"select E where B='"&I3&"' and C='"&J3&"' and D<="&K3&" ";0));0)

je pense que tu as suivi les manips

c'est super logique, mais c'est une "autre" logique qu'excel et on retrouve cette logique dans bien d'autres logiciels

2 lignes pour GSheets (sans macro) contre 22 lignes de code VBA

Excellent, je pensais justement me pencher sur la fonction Query que je ne connais pas du tout et ça semble être la solution !

En attendant j'avais choisi une solution plus longue avec la fonction INDEX.

Merci bien pour cette solution , je vais appliquer ça

Rechercher des sujets similaires à "importer fonction google sheets"