Tuples dans un tableur

bonjour j'ai besoin d'un fichier comme ceci :

.    1     2               3          4   5
A          Al             Bk         Ch   ...
B   Al (50,10,125)    (110,20,91)
C   Bk
D   Ch
E   ...

Al doit envoyer 110 paquets de marchandises à Bk, cela prend 20 véhicules, et il y a 91km entre les deux

donc chaque cellule doit contenir 3 informations, i.e. un tuple

avant de migrer mon travail vers Python qui gère les tuples mais ne gère pas l'affiche et la saisie de données sous forme d'un tableur…

…je me demandais si Excel permettrait de faire cela : mettre trois informations dans une cellule

on pourrait dire, un tuple, un vecteur, une matrice bref trois infos en même temps

avec ensuite un appel pour les formules du style B3[2]=20 truc comme ça

qu'en pensez vous ?

ou alors il faudrait répartir 110,20,91 dans trois colonne différentes et écrire "Bk" dans trois cellules fusionnées en une mais ça devient fastidieux…

Vinz

Bonsoir Vincent

comme ceci peut être ?

entre nous je ne savait pas ce qu'était un tuple

75tuple.xlsx (9.16 Ko)

A bientôt sur le forum

Papyg

bonjour,

Oui on peut parfaitement gérer ça sans crochet ni parenthèse, il suffit d'un séparateur quelconque.

Par contre ensuite les fonctions pour en exploiter les données sont plutôt sommaire (cf papyg) : il est préférable de se faire ses propres fonctions personnalisées en splitant les tuples...

34tuplevg.xlsm (20.02 Ko)

A+

Bonjour à toutes et tous !

Une proposition via Power Query (complément à télécharger pour votre version ancienne Excel) :

18tuple.xlsx (20.12 Ko)

Salut tous le monde

Si j ai bien compris, tu travail actuellement avec python et tu veux utiliser Excel seulement pour générer des tuples en profitant de son interface !?

Oui tu peux même générer des textes file (*.txt) directement utilisable avec un éditeur python.

Voici un exemple :

16tuples.xlsm (17.52 Ko)

bonjour à vous

et merci à vous quatre

papyg, ok je comprend le principe, tu mets n'importe quel séparateur et tu utilises les fonctions natives de excel et voilà ; cool

galopin, c'est ta solution qui me plaît le plus, donc tu fais comme papyg sauf que tu utilises des macros, c'est ça ? ; mais je vais vous avouer un truc : j'ai jamais écrit une macro je sais pas du tout comment on fait ; je suis allé dans outils/macros mais j'ai pas vu ton "SSP" qui apparaît dans l'aide des fonctions. Mais alors, SSP c'et une macro écrite par toi ou bien une fonction native ?

JFL, en fait j'ai pas compris comment fnctionne ton travail ; mais sans doute parce que j'ai pas téléchargé powerquery ; je vais essayer de trouver le courage de le faire quand j'ai fini de voir avec galopin

et amir, non je suis sur tableur, mais comme j'ai l'habitude de python par ailleurs j'ai posé une question "à la python" en parlant de tuples. et j'aime l'interface conviviale d'un tableur ; mais je suis frustré de ne pas pouvoir, à partir du tableur, écrire de lignes de code ; j'ai pas compris du tout ton exemple.

selon si j'arrive à maîtriser ou pas la solution de galopin, je pense sinon me tourner vers une librairie python du style pylightxl

si jamais vous en avez l'expérience, la seule question que j'aurais c'est : avec un truc comme ça, peut-on mettre un bouton dans excel pour que quand on clique dessus, ça runne le programme python qu'on ,a écrit et que donc via lui ça recalcule tout ?

bonjour à vous
oui Vincent j'ai employé les fonctions d'Excel pour répondre à ta question

je me demandais si Excel permettrait de faire cela

mais ce n'est pas très souple d'utilisation et je confirme qu'il te faut préférer la solution de la fonction développé par Galopin

PAPYG

Effectivement SSP est le nom que j'ai donné à la fonction que j'ai écrite.

A+

mais Galopin comment en fait écris tu une nouvelle fonction ?

sur internet ils disent d'appuyer sur alt+F1 (avec fn sur mac) mais ça ne donne rien

j'ai ouvert l'éditeur VBA mais je n'ai trouvé que ceci

Private Sub CommandButton1_Click()
MsgBox "my_tuple = ([" & ComboBox1.Text & " , " & ComboBox2.Text & " ," & ComboBox3.Text & "])"

Close
  chemin = "C:\repertoire"
  Open chemin & "\Fichier.txt" For Output As #1
  Print #1, "my_tuple = ([" & ComboBox1.Text & " , " & ComboBox2.Text & " ," & ComboBox3.Text & "])"
   Close
   Shell "C:\WINDOWS\notepad.exe " & chemin & "\Fichier.txt"

End Sub

Alors ma question : comment crées-tu une nouvelle fonction et où puis je voir les fonctions déjà créées ?

Ecrire une fonction se fait de la même manière quel que soit le langage... une fois dans l'éditeur yapuka coder !

Mais je n'ai aucune compétence sur python (ni sur mac) donc je ne sais pas si on peut exploiter une source python avec VBA ni Excel : Donc je passe la main s'il y a quelqu'un de polyvalent sur ces 2 langages.

A+

bonjour à tous

Il est vrai que l'univers Excel est vaste

tu as les fonction Excel existantes

les fonctions Excel Personnalisées comme celle faite par Galopin (et que tu peux éditer)

et enfin les fonctions VBA

sur le site tu as un descriptif pour les fonctions Excel, un pour les fonctions VBA.

Si tu veux faire tes propres fonction puis les associer à des boutons, les modifier il y a un excellent cours VBA que tu peux appréhender sans problème si tu connais déjà un autre langage comme Python.

PAPYG

ok merci

j'aurais juste voulu savoir où Galopin est allé pour écrire sa fonction

suivant tes conseils papyg j'ai commencé à fouiller les cours de ce site, mais je n'ai pas encore trouvé comment afficher les outils développeurs et comment éditer les fonctions personnalisées existantes ou comment en créer

j'essaierai de fouiller davantage dans la journée

une fois que j'aurai trouvé où on édite les fonctions personnalisées, quel que soit le langage je me débrouillerai !

ok je comprends ta question

tu vas dans menu Fichier/Options/Personnaliser le ruban

dans la partie droite de la fenêtre tu coche Développeur

image

tu as maintenant un bandeau supplémentaire 'Développeur'

tu ouvre Visual Basic

image

Tu clic droit sur VBAProject puis tu sélectionne Insertion/Module

tu as maintenant un environnement développeur ou tu vas pouvoir t'éclater

Bon courage

PAPYG

Même pas besoin de l'onglet développeur pour s'éclater un max. (Mébon ça mange pas de pain de l'installer...)

En revanche un petit paramétrage des options de gestion me semble indispensable.

A+

En complément avec nos derniers échanges veuillez noter cette modification importante dans chaque fonction :

(Ajout de Application.Volatile après les Dim)

Méthode à utiliser avec modération dans la rédction des Functions, mais peut sécuriser les recalculs en cas de modifications dans les données.

Function SSP&(rng As Range, ind%)
Dim i, tmp&
Application.Volatile
For Each i In rng
   tmp = tmp + Val(Split(i, "|")(ind))
Next
SSP = tmp
End Function

Function CONC$(rng As Range)
Dim i, tmp$
Application.Volatile
For Each i In rng
   tmp = tmp & "|" & i.Value
Next
CONC = Mid(tmp, 2)
End Function

A+

merci à Galopin pour son aide personnalisée hier et merci à tous pour les réponses

j'ai maintenant une question qui du coup n'est peut-être plus dans le bon forum

la possibilité de créer mes propres fonctions, comme SSP et CONC données par Galopin, est-ce qu'elle existe encore si je travaille sur docs.google.com, autremnet dit avec un tableur partagé en ligne ?

Bonjour,

On taquine un peu dans l'ésotérisme !

voir ici

A+

vu le peu que je connaisse de Google Sheets

l'utilisation de fonctions Excel nécessiteront une adaptation pour être acceptés dans Google Sheets

PAPYG

Bonjour à tous,

une petite précision sur Volatile.
Une fonction dont un des paramètre est changé est recalculée automatiquement.
Dans :

Function SSP&(rng As Range, ind%)
Dim i, tmp&
Application.Volatile
For Each i In rng
   tmp = tmp + Val(Split(i, "|")(ind))
Next
SSP = tmp
End Function

tous les paramètres utilisés (rng et ind) sont passé en paramètre, il est donc inutile de la mettre volatile et de la recalculer à chaque modif.
eric

Rechercher des sujets similaires à "tuples tableur"