Conseil base de donnees par array et conditions

Bonjour a tous,

j'aimerais un conseil concernant une macro que je souhaite creer.

Elle traiterait une "base de donnees", plus exactement gerer des versions d’appareils electroniques en fonction de leur numero de serie.

J'ai besoin d'un conseil afin de bien debuter,est-ce une bonne methode de mettre dans un tableau (array, car rapide d’execution il me semble) les donnees des colonnes A et B de la page HideSheet, cela afin de lancer des recherches dans mon tableau par la suite.

J’aurais ensuite deux principales fonctions, la premiere doit intervenir sur la feuille “Main” lorsque j’indique entre quel numero de version (colonne G et H) je souhaite faire les modifications j’aimerais que dans la colonne I cela m’affiche quelle serie est impactee.

Enfin sur les trois autres feuilles je souhaiterais en ayant la possibilite de choisir uniquement un numero de version par une combobox (est-ce possible d’avoir un moyen de selection directement via les cellules?) puis d’avoir les caracteristique automatiquement remplies dans les bonnes colonnes.

Voici un petit resume afin que vous compreniez davantage ce que je souhaite faire.

Je laisse en piece jointe un ficher exemple (rempli manuellement).

Merci pour vos conseils!

A.

26main.xlsm (24.99 Ko)
jadrien a écrit :

J'ai besoin d'un conseil afin de bien débuter,est-ce une bonne méthode de mettre dans un tableau (array, car rapide d’exécution il me semble) les données des colonnes A et B de la page HideSheet, cela afin de lancer des recherches dans mon tableau par la suite.

Il n'est pas nécessaire de transcrire tes données dans un tableau,

1°) tu devrais réinitialiser le tableau à chaque modification de la feuille.

2°) il y a une multitude de fonctions Excel que permettent les recherche, tri, etc.. qui ne seraient plus accessible avec un tableau.

jadrien a écrit :

J’aurais ensuite deux principales fonctions, la première doit intervenir sur la feuille “Main” lorsque j’indique entre quel numéro de version (colonne G et H) je souhaite faire les modifications j’aimerais que dans la colonne I cela m’affiche quelle série est impactée.

Montre-nous le début de ces 2 principales fonctions ?

jadrien a écrit :

uniquement un numéro de version par une combobox (est-ce possible d’avoir un moyen de sélection directement via les cellules?) puis d’avoir les caractéristique automatiquement remplies dans les bonnes colonnes.

Oui, C'est possible

Remarque : Dans l'éditeur de ton poste il y a un dictionnaire qui contrôle la syntaxe du français employé, il semblerait que tu ne t'y intéresse pas du tout c'est plein de fautes d'orthographe.

Pour info : les mot soulignés en rouge te signale qu'il ne sont pas conforme, clic droit et choisi la bonne orthographe.

A+

Oui merci de votre reponse.

Je mets en ligne des que je peux un exemple plus elabore afin de mieux comprendre le fonctionnement desire et de me conseiller!

Je prends en compte votre remarque concernant les tableaux et vois ce que je peux faire rapidement.

J'ai egalement resolu mon "soucis" de selection automatique sans ComboBox.

Remarque: C'est tout simplement parce que je ne travaille pas sur un pc Fr (azerty) ni une version d'office Fr

Ensuite les erreurs peuvent vite arriver, la preuve, il y en a trois dans votre dernier commentaire

A.

Je n'ai pas dis que j'étais infaillible mais au moins j'essaye d'en faire le moins possible

ce qui vraisemblablement n'est pas ton cas.

Et ce n'est certes pas l'excuse du clavier qui me ferras changé d'avis.

Bon amusement avec ta prog,

A++

Tres bien, merci pour vos remarques!

Bonjour,

déjà une fonction personnalisée pour avoir les séries en fonction des versions :

Function series(VDeb As Long, VFin As Long) As String
    Const sep As String = " - "
    Const entete As String = "Serie "
    '
    Dim plage As Range, s As Variant, i As Long
    If VDeb = 0 Or VFin = 0 Or VFin < VDeb Then
        series = ""
    Else
        '
        Set dict = CreateObject("Scripting.Dictionary")
        With Worksheets("HideSheet")
            Set plage = .[B2].Resize(.Cells(Rows.Count, "B").End(xlUp).Row, 1)
            For Each c In plage
                If Not dict.exists(c.Offset(0, -1).Value) Then
                    If c >= VDeb And c <= VFin Then
                        dict(c.Offset(0, -1).Value) = c.Offset(0, -1).Value
                    End If
                End If
            Next c
        End With
        s = Application.Transpose(dict.keys)
        Select Case dict.Count
        Case 0
            series = ""
        Case 1
            series = entete & s(1)
        Case Else
            For i = 1 To UBound(s)
                series = series & sep & entete & s(i, 1)
            Next i
            series = Mid(series, Len(sep) + 1)
        End Select
    End If
End Function

Ex de syntaxe sur la feuille :

=series(G3;H3)

Je doute de l'intérêt d'inscrire "Série " dans la réponse. Ca alourdi la lecture et ça complique s'il faut ensuite récupérer ces n°.

Si tes versions par serie sont consécutives comme dans l'exemple tu aurais peut-être intérêt de les indiquer par tranches (serie, début, fin)

Pour ta 2ème question on ne voit pas trop les liens de données entre ta feuille 'Serie 1A' ou apparait des A-A, A-B, Haut, Bas et la feuille Main.

J'ai l'impression que tu as grillé des étapes...

eric

Salut Eric, merci..

Bonsoir,

Il est vrai que mon precedent exemple ne voulait rien dire, je m'excuse pour la confusion.

J'ai modifie mon fichier excel afin de le rendre plus parlant (du moins je l'espere).

Pour explication plus concrete, ma page main, me sert a m'alerter sur d'eventuels problemes lors de la fabrication.

La page hide me permet de connaitre a quelle version est rattache le numero de serie.

Enfin les trois feuilles Version, me servent de recapitulatif, par rapport aux caracteristiques en lien avec la feuille main.

La chose qui m'embete est la suivante, je souhaite pouvoir selectionner un numero de serie et que celui-ci garde toutes ses caracteristiques en fonction des alertes rentrees dans la feuille main. Pour rappel, avant de me faire tirer les oreilles, je ne suis pas un pro de programmation.

Voila j'espere avoir ete plus clair, ensuite concernant mes problemes en programmation et le projet que je souhaite realiser:

Je souhaite faire apparaitre dans une comboBox les numeros de series en fonction de la version selectionnee, puis faire corespondre les valeurs saisies dans la feuille main dans les tableaux des differentes versions (1,2 et 3).

Je pars vite en besogne on va me dire aussi, mais j'ai prevu via une formule (SUMIF) et une nouvelle page ou je viens copier les donnes si pour une meme categorie l'on vient apporter differentes valeurs pour une meme location, cela me permet d'additionner mes donnees au final sans soucis.

Voila, je m'excuse encore pour mon manque de clarete!

A.

26mainbis.xlsm (23.93 Ko)

Bonsoir,

et bien on va déjà attendre le retour sur la fonction personnalisée...

De toute façon ton nouveau fichier a toujours des incohérences et les explications sont incomplètes.

Comment doit-on deviner que chassis = taille ????

Pourquoi chassis=-5 et pas -20 de la 1ère ligne ???

eric

Bonsoir,

bien sur vous l'aurez, je ne demande pas que l'on fasse le travail a ma place je demande des conseils (dans un premier temps haha)

Concernant les explications j'ai conscience du manque mais je ne souhaitais pas ecrire un pave lors de mon premier commentaire.

A la question, Comment doit-on deviner que chassis = taille ????

Oublions pour l'instant le fait que l'on puisse prevenir d'un eventuel probleme concernant le poid et la couleur.

Il faut savoir que la feuille main sera remplie manuellement et c'est de la, ou je viendrai remplir qu'elle est la plage de serie impactee par le probleme detecte (ici la ligne 3 par exemple il y aurait une modification a faire sur laquelle on pourrait gagner 20 cm)

Voila aussi pourquoi, je reponds a la seconde question, le chassis egal -20 et pas -6 sur la premiere ligne puisque je viens apres etude le remplir a la main (cela impact la structure chassis et la sous-structure suspension).

Je voulais donner un exemple (rempli manuellement avec les resultats qui serait attendus).

Si l'on se focalise sur la premiere ligne cela aurait comme impact de rentrer de facon automatique la valeur -20 dans les feuilles version 1, 2 et 3 car j'aurais indique manuellement d'ou commencais cette modification (colonne F de la feuille main=1) jusqu'a la version 100 (colonne G de la feuille main).

D'ou ma feuille hide, qui vient repertorier les donnees (et l'ordre des numeros de series est fixe et a une importance egalement, on pourrait dire que c'est l'ordre de production; la version 1 prend en compte les numeros de series de 1 a 18; version 2 = de 19 a 59 et version 3 = de 60 a 100, et donc suivant la logique une modification sur la version 1 a un impact sur la version 2 et 3 tandis qu'une modification a partir de la version 2 aura un impact seulement sur la version 3).

Est-ce que je fais avancer la chose?

Je voudrais votre avis sur la facon dont j'entreprends la chose, car j'aurai a venir beaucoup de donnees a traiter.

Merci

A.

Bonjour,

bien sur vous l'aurez

Et bien on va attendre... Ne serait-que que le merci minimum

Pour le reste, vu que pour moi tu ne réponds pas aux questions, tu vas attendre quelqu'un sachant se contenter de tes réponses pour comprendre.

eric

Bonjour,

J'ai une premiere version de ce que je souhaitais faire au depart, je la laisse en pj.

J'ai laisse mes remarques directement sur la feuille scope.

Je ne sais pas vraiment si j'utilise la meilleure methode pour arriver a faire ce que je souhaite.

Merci d'avance

18mainbis.xlsm (30.50 Ko)
Rechercher des sujets similaires à "conseil base donnees array conditions"