Modification de formule pour pouvoir glisser et cumul de colonnes

Bonjour à toutes et à tous,

Je viens à vous avec un problème ayant potentiellement était déjà résolu, cependant je n'ai trouvé aucun de ces exemples de résolution... cependant cela peut venir de ma difficulté de base déjà à formuler le problème, j'explique:

Dans mon document excel, j'ai 3 feuilles, la première contenant les données brutes que je veux traiter, la feuille 2 qui me sert de tampon pour organiser mes données (filtrer/trier/etc...) et ma feuilles 3 où j'ai mes données traitées et les traitements finaux que je souhaite appliquer.

J'ai essayer de vous faire un extrait de fichier viable pour être plus explicite quand à mon problème en enlevant toutes les données confidentielles... cependant trop de dépendances etc font que ça ne marchait pas. Je tenterai donc d'être le plus clair possible, voila le premier problème:

Situation: Dans ma "Feuil3", j'ai une formule comme suit: =SOMME.SI.ENS(Feuil1!E:E;Feuil1!F:F;INDIRECT("Feuil3!$B"&LIGNE())) qui du coup, va additionner les valeurs présentent dans les cases E de la "Feuil1" lorsque la valeur de la case F de la même ligne est identique à la valeur se trouvant dans la case Bx de la "Feuil3" où x est le numéro de la ligne où se déroule le calcul. Ayant plus de 80 cases dans lesquelles je dois effectuer une opération similaire, j'aimerai pouvoir faire glisser la formule aux 80 cases de la même lignes, et de plus, ayant à faire la totalité de cette opération pour plusieurs lignes où la case Bx aura une valeur différente, j'aimerai aussi pouvoir faire glisser en colonne (d'où mon utilisation d'INDIRECT).

Problème: mes colonnes (E et F dans l'exemple) que je veux traiter sur la "Feuil1" ne se suivent pas, elles sont décalées, exemple: les 2 première colonne que je traite sont les colonnes E et F, les 2 suivantes sont I et J, les suivantes M et N, etc... Je me heurte donc au problème que ça ne décale pas de la bonne manière les lettre quand je fait glisser... J'ai essayer avec du INDIRECT et d'autres formules méga tordue trouvées sur le net et rien ne marche pour l'instant... (je précise que je ne veux pas utiliser de VBA car ce doit être utilisable sur un pc sécurisé sur lequel le VBA ne marche pas, de plus, l’intérêt que j'ai dans le fait de pouvoir faire glisser la formule c'est qu'actuellement j'ai à faire glisser sur une 80aines de cases, mais cela pourrait monter à l'avenir sur plus de 200 cases... donc...)

Mon deuxième problème, qui je pense est plus simple à faire, mais là encore, les solutions que j'ai trouvé sur le net ne satisfont pas ce que je cherche:

Situation: Dans la case Bx de ma "Feuil3" dont je parle dans le premier problème, je génère en fait une liste déroulante via "Validation des données" en récupérant dans la colonne A de la "Feuil2" toutes les valeurs (nom de produits) de la colonne F de la "Feuil1", en l'ordonnant de manière croissante et en enlevant les doublons.

Problème: À l'heure actuelle je ne récupère que les valeurs de la colonnes F de la "Feuil1" ce qui couvre la majeure partie des possibilités qui m'intéresse, cependant il peut y avoir des valeurs apparaissant dans les colonnes J, N, etc... qui ne sont pas dans la colonnes F et que je souhaiterai récupérer aussi.... En résumer, j'aimerai récupérer les valeurs des colonnes F, J, N, etc... dans une seule colonne où je pourrai les ordonner et enlever les doublons. (en prenant en compte qu'à l'heure actuelle, sans enlever les doublons, il y a 42206 valeurs dans la colonne F... donc juste le mettre bout à bout ne marcherai pas...)

Voilà, ça fait du gros pavé, encore désolé de pas avoir mis de fichier exemple mais comme stipulé plus haut j'ai pas réussi à obtenir un extrait avec des données que j'ai le droit de fournir et qui soit fonctionnel.... J'espère avoir été assez explicite, et je vous remercie pour votre attention.

En espérant avoir des réponses de votre part.

Cordialement

Bonjour,

Ce problème serait problamement résolu avec une macro.

vous pourriez surement joindre un fichier exemple, avec un minimum de données et sans des données sensible ?

Tout d'abord, merci pour la réponse rapide,

Ensuite, pour ce qui est de la macro, c'est possible, j'avoue être novice sur excel et n'avoir à l'heure actuelle réalisée aucune macro.. xD Donc si tu pouvais m'éclairer, ça m'arrangerai après je vais tout de même commencer à regarder ça de mon côté.

Pour ce qui est du fichier exemple, j'essayer de te faire quelque chose, j'espère que ça pourra aider/convenir

11exemple.xlsx (21.50 Ko)

Bonjour,

Une proposition à étudier.

La mise en forme des données sous forme de tableau est primordiale pour tout calcul.

Cdlt.

Bonjour,

Revoici votre fichier,

est-ce que cela convient ?

Déjà, merci pour vos réponses

Pour ce qui est de la proposition de Jean-Eric, en effet la mise en forme des données est intéressantes cependant j'ai essayé avec mes données, c'est beaucoup trop à traiter, mon pc et/ou mon logiciel tien pas la charge et crash à chaque fois :/

En revanche, sabV, votre solution marche du feu de dieu dans le cas du cumul des colonnes, ainsi que dans votre solution somme toute très simple mais qui ne m'étais pas venu à l'idée pour le glissé de formule xD En revanche, j'aimerai savoir, comment peut-on transférer une macro d'un fichier à un autre?

Merci encore pour votre aide

Re,

Je suis un peu étonné de ton retour.

Quelle est la différence entre les données que tu as envoyées et ton fichier réel?

Cdlt.

hum.. comment dire... la quantité de donnée je dirais, pour vous donner une idée la quantité de donnée que j'ai actuellement prend la zone:

de A1 à KU42206.... ^^' et ce n'est pas le plus qu'il puisse y avoir à l'avenir...

Bonjour Athanator, Jean-Eric,

Athanator, je suis aussi surprise de ta décision d'utiliser les formules au lieu du tcd (solution de Jean-Eric)

car si tes données son très volumineuses cela risque de ramer au recalcul.

Bah, par la pratique, les formule de ta version, sabV, n'ont aucun problèmes et un temps de calul aux alentour de 3-4sec pour le glisser de formule, peu importe la longueur de mon glissé, et pour le cumul de colonne dans les 20sec. Alors qu'avec le tcd, ça plante à chaque fois, ça tourne non stop pendant un long moment et ensuite excel me dit avoir planter... Alors je dis pas que c'est moins bien, si vous êtes tous les deux à dire que c'est mieux et plus opti, je n'en doute pas, je pense que vous savez de quoi vous parlez. Cependant... en l’occurrence, ça ne marche pas pour moi... :/

Bonjour,

Je ne veux passer pour un rabat joie, mais ton fichier (onglet données) est mal foutu...

Comme on te le fait savoir avant moi, tes données doivent se présenter en tableau et ici avec ta manière de présenter, comment feras-tu quand (si) il y aura 5000 produits ?

Il faut une colonne date-time-commande -id prod-qté prod-nom-prix

Et un tcd fonctionnera sans peine

P.

Bah, par la pratique, les formule de ta version, sabV, n'ont aucun problèmes et un temps de calul aux alentour de 3-4sec pour le glisser de formule, peu importe la longueur de mon glissé, et pour le cumul de colonne dans les 20sec. Alors qu'avec le tcd, ça plante à chaque fois, ça tourne non stop pendant un long moment et ensuite excel me dit avoir planter... Alors je dis pas que c'est moins bien, si vous êtes tous les deux à dire que c'est mieux et plus opti, je n'en doute pas, je pense que vous savez de quoi vous parlez. Cependant... en l’occurrence, ça ne marche pas pour moi... :/

ok, l'important c'est qu'il y ai une solution qui fonctionne pour toi,

alors c'est résolu ?

Hum.. pour te répondre patrick1957, si le problème que tu soulignes est la forme de la "Feuil1" de mon fichier, malheureusement celle-ci est non négociable. En fait elle m'est donné via récupération d'un CSV généré par un logiciel de ma boite et sur lequel je n'ai pas la main à la création...

sabV, c'est résolu oui et non, parce que ta solution fonctionne mais il faudrait juste que je sache comment refaire (ou "déplacer") la macro que tu as créé de ton fichier exemple vers mon fichier principal.

Encore merci pour le temps que vous m'accordez

 il faudrait juste que je sache comment refaire (ou "déplacer") la macro que tu as créé de ton fichier exemple vers mon fichier principal

La seule macro que j'ai faite est celle pour créer la liste des produits en Feuil3

Cette liste sert uniquement à la liste de validation sur la Feuil2 cellule B4 et B8

Il faut copier cette macro sur un Module, appuyé sur les touches Alt+F11 pour ouvrir la fenêtre VBA

Faite un clic droit sur VBAProject(VotreFichier.xlsm)

Sélectionner > Insertion > Module

Coller la macro sur la page blanche à droite

Vous pouvez m'envoyer votre fichier pour que je l'intègre.

ÉDIT:

Pour la formule de la liste de validation

=INDIRECT("Tableau2[produit]")

Sub ListeProduit()
'activer la référence "Microsoft Scripting Runtime"
Dim Dico As New Scripting.Dictionary
Set sh1 = Sheets("Feuil1")
Set sh2 = Sheets("Feuil2")
LastCol = Range("Tableau1").Columns.Count
LastRow = Range("Tableau1").Rows.Count
 For i = 6 To LastCol Step 4
  For y = 2 To LastRow
    p = Range("Tableau1")(y - 1, i).Value
    If Not Dico.Exists(p) And p <> "" Then Dico.Add p, 1
  Next
Next
sh2.Cells(2, 1).Resize(Dico.Count, 1) = Application.Transpose(Dico.Keys)
End Sub

Bonjour,

Une nouvelle proposition à tester.

Peux-tu nous envoyer le csv (sans aucune manipulation, en le compressant si nécessairer) en partie ou en totalité?

Cdlt.

désolé pour le délai de réponse mais avec les intempéries de la semaine dernière, j'ai malheureusement eu d'autres chats à fouetter que ce fichier ^^"

pour sabV, j'ai réussi à déplacer la macro, ça marche très bien, je te remercie, pour l'heure en tout cas ça fait parfaitement ce que je souhaitais je te remercie énormément.

pour Jean-Eric, je suis désolé, j'ai essayé ton nouveau fichier mais non, ça ne marche toujours pas... mais bon il y a du mieux, ça fait pas tout crasher, ça me mets juste une erreur au bout de quelques minutes de moulinage "Type incompatible (erreur 13)" :/ et pour ce qui est du CSV, malheureusement, je ne peux rien fournir, c'est par définition même uniquement des données sensibles que je ne peux fournir.... pour donner une idée, ce sont les données telle que vous les voyez dans mon exemple, dont les valeurs des colonnes sont séparées par des "," et les fins de lignes sont stipulées par des ";". Je te remercie tout de même aussi énormément pour le temps que tu as passé à essayer de m'aider

Merci pour ce retour, au plaisir!

si le problème est résolu, s.v.p. pour clôturer le fil, cliquer sur le bouton V vert du post à coté du bouton EDITER, merci!

Rechercher des sujets similaires à "modification formule pouvoir glisser cumul colonnes"