Aide pour une formule ou macro

Bonjour !

S'il vous plaît , j'ai besoin d'automatiser une tâche sur un fichier de plus de 24000 lignes !

j'ai créer ci-joint un fichier prototype vue la taille du premier.

le problème est le suivant j'ai 4 colonnes Ref final+diamètre et affectation+diamètre , et je veux regrouper les deux colonne (ref final + affectation) en fonction des diamètres possible à fournir, pour ref final et pour affectation (recherche de probabilité)

le résultat dont je souhaite atteindre est affiché dans les colonnes colorées !

Merci d'avance pour votre aide !

Cordialement !

je vois que ta première colonne colorée, K, Ref final, est toujours identique à la colonne D.

je ne vois aucune explication à propos de comment obtenir la colonne colorée L, Affectation.

si jamais cela doit se faire en VBA, quelle est ton expérience?

Bonjour,

Merci pour votre réponse !

Oui la colonne D est identique à la colonne K,

Alors voilà ce que j'avais fait, j'ai copié la colonne D dans K puis j'ai définit toute les probabilité juste de S1, quand il y a 0 ça veux dire que les critères de diamètre de S1 ne correspondent pas au critère de diamètre de ref finale, comme le cas dans la quatrième ligne d'ou Xp3 c'est écris 0.

j'ai recommencé le processus pour toute les type d'affectation (S1, S2, S3, S4) pour ce prototype que j'avais mis.

Peut-être ça passe avec une macro , mais je ne sais pas comment faire !!

Merci d'avance !

je n'ai pas compris pourquoi tu as mis 0 en L5, sur la ligne avec xp3 en K5.

tu mentionnes que les critères de diamètre de S1 ne correspondent pas au critère de diamètre de ref finale.

peux-tu préciser, pour l'exemple en L5, comment déterminer le critère de diamètre de ref finale, les les critères de diamètre de S1, et ce que tu entends par "correspondre"?

donnes peut-être quelques exemples précis.

il faudra ensuite que tu expliques "recommencer le processus pour toute les type d'affectation (S1, S2, S3, S4)".

Bonjour,

Merci pour votre réponse !

pour L5 j'ai mis 0 car xp3 ne possède que 0.7 et 16 comme type de diamètre (colonne C+ colonne D) , et pour ça S1 ne peut fournir que trois type de diamètre 0.1 et 0.3 et 0.5 (colonne F + colonne G) !

je ne doit pas déterminer pas les diamètres, alors pour cet exemple j'ai quatre type d'affectation

Ci-joint un autre fichier avec la fonction SI dans la colonne M qui explique peut-être le resultat que je souhaite aboutir !

pour atteidre le resultat avec la fonction si je devais aussi copier les diamètre de ref final ! plus de detail dans le fichier , je voudrais bien essayer d'automatiser les deux tache, le copier coller de ref de la colonne ref final en fonction des type d'affection , et aussi la recherche de correspondance comme dans la fonction SI.

Car le problème c'est je possède un fichier de 24000 ligne avec 60 type d'affectation, ceci ci-joint c'est juste un prototype !

Merci d'avance pour votre aide !

Cordialement.

ton exemple est très confus, parce que tu as choisi que les colonnes C+D aient la même longueur que les colonnes F+G, alors que ce n'est pas du tout le cas en réalité.

si je comprends bien, tu veux automatiser la création d'un tableau de 1440000 lignes. c'est sans doute faisable, mais est-ce la meilleure chose à faire?

que feras-tu ensuite avec ce tableau?

tu as décrit ce que tu faisais, pas pourquoi tu le faisais, pas ce que tu voulais réellement obtenir.

Bonjour,

Merci pour votre réponse encore !

les colonne F + G , n'ont aucune relation avec les colonne C +D.

alors dans ce cas j'ai quatre type d'affectation de s1 à s4 ,

alors la première tache serait de copier coller ce qui est dans la colonne D dans la colonne K. ça c'est la première tache

la deuxième deuxième tache est de chercher les possibilités juste pour S1 si alors si ça trouve (0.1 ou 0.3 ou 0.5,(c'est ce qui est fournis dans la colonneG)) dans les diamètre de ref final dans ligne ça mis S1 sinon ça mis 0.

et ça recommence pour chaque type d'affectation , alors si j'avais 6 affectation(s1 + s2 +s3 + s4 + s5 + s6) ça vas copier coller 6 fois avec la recherche de correspondance.

Dans la case M24 vous allez voir que la fonction si a changé (car j'ai terminé de S1 et j'ai passé à S2) !

le resultat que je veux aboutir c'est ce qui est mis dans les deux colonne colorées, (la colonne M c'est juste une explication)

Merci d'avance pour votre aide !

Cordialement.

Pour le tableau du fichier réelle oui 24000*60 =1 440 000 (ça serait le nombre de ligne à la fin)

Mais quand le processus sera terminé je vais filtrer par 0 la colonne affection qui est la colonne L colorée dans l'exemple puis je vais supprimer toute les ref final qui ont 0 dans affection car ils ne seront pas utile pour moi.

dans l'exemple j'ai 88 ligne comme résultat si on supprime ceux qui ont 0, il reste 51 ligne qui seront utile pour moi. (ça veut que dire chaque ref final posséde ses affectations ( 1 ou plusieurs).

Merci d'avance pour votre aide !

il me semble donc inutile de créer dans les colonnes K+L les lignes où il y aurait 0 en colonnes L.

que vas-tu faire ensuite avec ces colonnes K+L? il est peut-être plus simple de se préparer autrement à l'étape suivante.

Bonjour,

Merci pour votre réponse !

Oui, inutile de créer dans les colonnes K+L les lignes où il y aurait 0 en colonne L.

S'il vous plaît, que voulais vous dire par "que vas-tu faire ensuite avec ces colonnes K+L? il est peut-être plus simple de se préparer autrement à l'étape suivante."

Si vous voulais parler de après la création de la colonne K+L sans la création des ligne ou il y aura 0 dans la colonne L ,

dans ce cas non rien je souhaite juste aboutir le résultat comme dans les colonne colorés sans les ligne ou il y a 0, c'est la fin de mon processus.

je suis totalement désolé car je croit bien que mes explication n'étaient pas aussi clair pour le début , j’espère l'être maintenant !

Merci d'avance pour votre aide !

Cordialement.

est-il important que les colonnes K+L soient classées comme tu l'as indiqué?

Bonjour,

je suis totalement désolé quand j'ai filtré et supprimé les ref final qui ont des 0 il y aura des doublons comme xp1 = S1 par exemple pour le cas de s1 car xp1 possède deux type de diamètre (0.1 et 0.5) qui sont fournis par S1 (0.1 et 0.3 et 0.5).

ça ne cause pas de problème pour moi si les doublons seront supprimer !

on bien ça serait mieux pour moi si on motionne aussi dans la colonne I les diamètre des ref final dans ce que les ligne ne seront pas traité comme doublons comme dans le fichier ci-joint ! s'il vous plaît ça serait tellement bien pour moi si ça serait possible sinon pas de problème !!

Merci d'avance d'avance pour votre aide !

est-il important que les colonnes K+L soient classées comme tu l'as indiqué?

Non ce n'est pas important !

je propose alors ceci:

Option Explicit

Sub KL()
Dim dct As Scripting.Dictionary
Dim ws As Worksheet, g As Range
Dim k, s
Dim slg As Long, tlg As Long
Set dct = New Scripting.Dictionary
Set ws = ThisWorkbook.Sheets("Feuil1")
Dim diam As String

Set g = ws.Cells(2, 7)
Do While g <> ""
    diam = CStr(g.Value)
    If dct.Exists(diam) Then
        dct(diam) = dct(diam) + "|" + g.Offset(0, -1).Value
    Else
        dct(diam) = g.Offset(0, -1).Value
    End If
    Set g = g.Offset(1, 0)
Loop
'resultat en JKL (diam, ref, S)
' source en CD (diam, ref)
tlg = 2
slg = 2
Do While ws.Cells(slg, 3) <> ""
    diam = ws.Cells(slg, 3)
    If dct.Exists(diam) Then
        For Each s In Split(dct(diam), "|")
            ws.Cells(tlg, 10) = ws.Cells(slg, 3)
            ws.Cells(tlg, 11) = ws.Cells(slg, 4)
            ws.Cells(tlg, 12) = s
            tlg = tlg + 1
        Next s
    End If
    slg = slg + 1
Loop
End Sub

Bonjour,

Merci pour votre précieuse réponse encore !!

S'il vous plaît, j'ai pas su comment adapter la macro dans le fichier !

pourriez-vous m'envoyer le fichier classeur probabilité, contenant la macro !

Je suis totalement désolé pour le dérangement !

Merci d'avance pour votre aide !

Cordialement !

ne sois pas désolé, et je pense utile que tu puisses intégrer le code de la macro dans ton fichier.

jette un coup d’œil ici: https://www.excel-pratique.com/fr/vba.php

Bonsoir,

S'il vous plait j'ai créer un autre fichier en tant que xlsm, puis j'ai copié le code dans un module , (j'ai copié option explicit dans la feuil 1)

quand je clique sur le bouton ça donne ( erreur de compilation , type définit par l'utilisateur non définit) je ne sais pas vraiment comment faire , désolé pour mon ignorance !

ci-joint le fichier

Merci d'avance pour votre aide !

tu progresses vite!

il est souvent utile de préciser sur quelle ligne l'erreur se produit.

j'imagine que c'est sur la ligne avec "scripting".

il faut ajouter une référence vers "Microsoft Scripting Runtime". Explications: https://docs.microsoft.com/fr-fr/office/vba/language/how-to/check-or-add-an-object-library-reference

Bonjour à tous,

En plus de la référence "Microsoft Scripting Runtime" manquante soulevée par yg_be.

Modifie comme ceci Dim dct As New Scripting.Dictionary et...

Désactive ou supprime 'Set dct = New Scripting.Dictionary

Référence : https://excel-malin.com/tutoriels/vba-tutoriels/la-structure-dictionnaire-en-vba/

ric

Bonsoir,

Merci pour vos réponses yg_be et ric !

ça fonctionne bien maintenant juste que ça à donner trois doublons que pour S3 je ne sais pas vraiment pourquoi !

en merci ça fonctionne bien, aprés je vais la tester le gros fichier concerné

Merci encore !

Cordialement !

Rechercher des sujets similaires à "aide formule macro"