Projet avec vba

inel94

XLDnaute Junior
Bonjour à tous,

Je suis sur un projet ou je dois réaliser un fichier excel et j'ai besoin de vba. Le soucis c'est que j'y connais rien du tout en programmation.
Mon premier problème c'est que j'ai 6 menu déroulants et qu'il y a des doublons et des cases vides.
Ensuite une fois que j'ai fais mes choix, je ne sais pas codé le bouton validé afin qu'il m'affiche les résultats.

Pour les menu déroulants, j'ai utilisé la fonction suivante:
Dim i
For i = 2 to 65536
ComboBox7.AddItem Sheets("Feuil2").Cells(i,1)
Next
Ca créer un menu déroulant pour la colonne A, pour les autres colonnes je ne sais pas faire :confused::confused:
Merci d'avance.
 

Dranreb

XLDnaute Barbatruc
Re : Projet avec vba

Bonjour.

Ah oui, ça, écrit comme ça, ça peut déjà être interminable ! Et vous ne comprenez pas pourquoi ??? Vous accédez des dizaines de millier de fois aux cellules, voilà pourquoi ! Vous ne pouvez donc pas vous inspirer notamment de la GarnirList qui n'y accède qu'une fois au début ? En plus vous vous remettez à jardiner dans Sheets(1) avec votre salade à vous, alors que vous devriez avoir compris, depuis le temps, que tout est déjà convenablement isolé une bonne fois pour toutes dans CL.PlgTablo, avec le bon nombre de lignes !
Mais pas le nombre de colonnes: c'en sont les lignes entières, alors, pour ne pas charger inutilement un tableau de plusieurs milliers de colonnes, il faut le préciser derrière par un .Resize(, …

Je me demande parfois à quoi servent les commentaires détaillés que j'ai pris soin de mettre dans ComboBoxLiées :
Public PlgTablo As Range ' Propriété. Plage des lignes entières couvertes par le tableau. À votre disposition. Initialisée par méthode Plage.

Public Sub Plage(ByVal Plg As Range)
Rem. —— Cette méthode permet de spécifier la plage du tableau commun à toutes les ComboBox.
' Plg: La plage en question. Seules les lignes entières en sont retenues. Elle peut aussi être re-spécifiée au Actualiser.
' Si une seule ligne est spécifiée, elle sera étendue jusqu'à la dernière cellule renseignée de plus qu'une chaîne vide.
' Remarques: En l'absence d'un appel préalable à cette méthode, la méthode Add essayera de déduire la plage de la première
' spécification de colonne qui sera un Range ou un String.
' Cette plage sera aussi disponible par la suite, à votre service, en tant que propriété PlgTablo. Il est même vivement recommandé de l'utiliser
' partout en lieu et place d'une expression Range classique Workbook.Worksheet.Range, puisqu'elle est bien définie là une bonne fois pour toutes.
Si je n'avais pas voulu que PlgTablo soit utilisable avant tout par le programmeur d'application, je n'aurais pas veillé à la déclarer Public: c'est inutile pour les seuls besoins internes du module de classe: il la partage exprès, pour rendre service !
 
Dernière édition:

inel94

XLDnaute Junior
Re : Projet avec vba

Bonsoir,

Je vous présentes mes excuses. Je commençais a être débordé, j'ai demandé à un ami de m'aider et je ne lui avais pas précisé de faire avec la "garnir liste". Peux on reprendre aux calculs d'EO, ATP, d'équipe, OM etc.... s'il vous plait? Je suis bloqué sur la synthèse et j'ai besoin de votre aide.
 

Pièces jointes

  • GPO.xls
    219 KB · Affichages: 46
  • GPO.xls
    219 KB · Affichages: 49
  • GPO.xls
    219 KB · Affichages: 54

Dranreb

XLDnaute Barbatruc
Re : Projet avec vba

Bonsoir.

J'avais pensé, en voyant l'autre classeur, à le faire dans une procédure à part munie de paramètres passés ByVal aux noms clairs, pour qu'on y voie plus clair. Mais je ne suis pas sûr que ce serait mieux. J'avais aussi vaguement vu que c'étaient 15 cas, 3 * 5, alors des Case Of imbriqué seraient peut être pas mal. Je n'ai plus le code sous les yeux, et il me semble y avoir encore moins de choses dans ce classeur ci.
 

Dranreb

XLDnaute Barbatruc
Re : Projet avec vba

Non, je n'ai pas les billes pour ça. Je vous avais déjà parlé de l'éventualité d'un Select Case au #56, mais ça m'a l'air plus compliqué et je ne connais pas les règles. Vous auriez dû essayer de le mettre en pratique vous même et non le confier à quelqu'un d'autre.
Mais vous pouvez peut être reprendre ce qu'il à fait, mais en allant prendre les infos dans Te(L, x) au lieu de Sheets(1).Range(x & L). Ce sera au moins déjà beaucoup plus rapide ! Ensuite avec un Sélect Case vous pourrez un peu mieux organiser tout ça en évitant de retester 15 fois la même chose.
 

Dranreb

XLDnaute Barbatruc
Re : Projet avec vba

Bonjour.

Si vous avez décidé de 'sortir' de l'Userform cette partie pour en faire un récapitulatif dans une feuille, et si tout doit y être classé, j'ai, si ça vous intéresse, une fonction GroupOrg qui organise tout en collections imbriquées. Il ne reste plus qu'à las explorer par des For Each In. C'est un module ordinaire MClassement et un de classe SsGroup à installer. Ils utilisent TableIndex que vous avez déjà. On peut dire que c'est un vrai moteur à tableaux croisés dynamiques personnalisés, mais dont vous restez totalement maître de la présentation et surtout de la réactualisation, laquelle n'est pas automatique pour les TCD Excel, ce qui oblige quand même de toute façon à du code si on la veut telle.
 

Discussions similaires

Statistiques des forums

Discussions
312 100
Messages
2 085 294
Membres
102 854
dernier inscrit
ADRIENVR