Plusieurs tâches complexes VBA et Macro

Carlettia

XLDnaute Nouveau
Bonjour,

Par avance je vous remercie pour le temps consacré à lire mon poste et aux potentielles solutions proposées afin de m'aider dans l'élaboration de ce programme.

J'ai réaliser un programme excel permettant de créer un diagramme de gant à partir d'une liste de tâches avec une date de début, de fin, une durée etc etc...

Nous pouvons dans ce programme, sélectionner après chaque ligne du dagramme de gant, insérer des qualificatifs permettant d'en savoir plus sur la tâche( domaine d'activité, lexique, quantité etc...). On peut donc qualifier la ligne par une liste dérulante reprennant les domaines d'activitès identifiés (qui chacun se trouve sur un feuillet) et son lexique de verbe d'actions associé (présent dans chaque feuillet de chaque domaine).
De plus un programme en VBA permet d'alimenter les listes de chaque domaine ou d'ajouter un domaine.

Aujourd'hui il me manque des connaissances pour réaliser plusieurs choses:
-Lors de l'insertion d'un nouveau verbe d'action, j'aimerais que lorsque il s'intégre à la liste des verbes d'actions la liste se tri de manière automatique à partir du premier verbe d'action (A4). Et que quand il s'intégre à la liste il posséde la même police.

-Lors de la creation d'un nouveau domaine, lorsque je ne le crée pas et que je fais quitter, le domaine et donc le feuillet lui correspondant se créer quand même, j'aimerais que ça ne le fasse pas. De plus j'aimerais avoir une mise en forme équivalente aux feuillet des domaines (police 16, premiere cellule en jaune, seconde en grise et création d'une liste et d'une fonction automatique possédant le nom du domaine à partir de A4 où les verbes d'actions seront placés), et que le nom de domaine s'intégre à la liste des noms de domaines (feuillet lancement), nom de domaines je vous le rappel selectionnable dans le feuillet planing qui ensuite améne à une sélection de son lexique (listes imbriquées).

Voila, je sais je ne suis pas au supermarché, je fais pas mes courses mais j'ai réelement besoin d'aide pour terminer ce prototype.

Je vous remercie encore pour le temps passé à lire ce poste et de l'aide potentielle.

Bien cordialement,
 

Pièces jointes

  • proto-proto.xls
    236 KB · Affichages: 82

Modeste

XLDnaute Barbatruc
Re : Plusieurs tâches complexes VBA et Macro

Bonjour Carlettia,

Effectivement, on n'est pas au supermarché (tu as donc retenu l'essentiel!) ... mais ça ne t'empêche pas d'être gourmande, visiblement ;)

Procédons par étape, si tu veux bien:
  • n'oublie jamais que, pour toi qui manipules le fichier tous les jours et qui sans doute l'a vu naître (voire même lui a donné le jour) tu "baignes" tellement dans cet environnement, que tout te semble clair et limpide ... pour nous qui te lisons, c'est sensiblement différent!
  • pour ta première demande, si tu as bien dans les feuilles "électronique", "maintenance", "mécanique", etc. une plage nommée qui porte exactement le même nom que la feuille qui l'héberge et que la structure de chacune des feuilles concernées est identique, tu peux essayer de copier-coller le code suivant dans le module de chaque feuille concernée (les feuilles "Domaine" :confused:)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Range(Me.Name), Target) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        Range(Me.Name).Sort key1:=[A4], order1:=xlAscending, Header:=xlYes
    End If
End Sub

Pour que la police soit identique à chaque insertion d'un verbe, il me semble qu'il suffit de sélectionner toute la colonne, d'y appliquer la police de ton choix et d'enregistrer, non?

Pour le reste, je propose qu'on y revienne dans un second temp. Pourquoi ne pas créer une "feuille modèle" qu'il suffirait de dupliquer. Il faudra aussi que tu précises dans quelle partie du code il faut aller "farfouiller" (histoire de gagner un peu de temps).

Mais vois d'abord si j'ai bien compris le début ...

Edit: ... et impatiente avec ça!
 

Carlettia

XLDnaute Nouveau
Re : Plusieurs tâches complexes VBA et Macro

Re-bonjour,

Excusez moi mais le message que j'ai poster il y a quelques temps ne sait pas ajouter --".

Alors j'ai essayer de rentrer le code que tu m'as donner...Mais ça na rien donner.

Donc enfait j'aimerais que à chaque nouvelle ligne insérer dans un feuillet existant (mécanqiue, hydraulique etc...)le tri de la cellule A4 jusqu'à la fin se fasse de manière auto dés l'insertion.
Et que à chaque nouveau feuillet créer via le menu en VBA , le nom du feuillet s'intégre directement dans la liste Type se trouvant au feuilelt Lancement.

je n'y arrive vraiment pas, j'essaye et j'essaye mais je n'y arrive pas
 

Carlettia

XLDnaute Nouveau
Re : Plusieurs tâches complexes VBA et Macro

Private Sub Worksheet_Activate()
Range("A4:A10").Select 'plage par exemple où sont tes noms et adresses mais comme c'est une plage aucun soucis
Selection.Sort Key1:=Range("A4"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 'A4 est la cellule où il y a le premier nom
Range("A4").Select
End Sub

pour le tri alphabétique automatique lors d'une nouvelle insertion cette formule marche très bien il suffit de copier coller dans le module de chaque page
 

Carlettia

XLDnaute Nouveau
Re : Plusieurs tâches complexes VBA et Macro

Re-bonjour,

Donc le tri automatique à chaque nouvelle insertion est réglé.
J'ai aprtager la ligne de code.

Maintenant ece que c'est possible que lorsque je crée un nouveau feuillet via mon MENU d'insertion, il posséde exactement la même mise en page que les feuillets mécanique, hydraulique etc...(domaines), qu'une liste se crée à l'interieur à partir de la cellule A4 qui porte le même nom que le nom du domaine du feuillet et que ce nom s'intégre à la liste Type présente au feuillet Lancement?

Cordialement,

Merci par avance pour vos pistes,
 

Modeste

XLDnaute Barbatruc
Re : Plusieurs tâches complexes VBA et Macro

Bonjour Carlettia,

Dans ton premier message, tu demandais que lorsque tu ajoutais un nouveau verbe d'action dans une des feuilles domaines, la liste des actions de cette même feuille se trie automatiquement.
Dans le dernier code que tu nous livres, le tri se fait à l'activation de la feuille ... tu es donc obligée, après un ajout, de sélectionner un autre onglet, avant de revenir à celui où tu as fait l'ajout, pour que le tri s'effectue!? Par ailleurs, le tri ne se fait, dans le code que tu as trouvé, que sur la plage A4:A10 ... ou alors tu devras modifier les références dans le code (pour chaque feuille et chaque fois que tu auras ajouté des verbes!?)

Pour qu'on arrive à se comprendre sur ce premier point, je remets ton fichier original, avec le code que j'ai proposé, dans les feuilles "domaines".
Peux-tu tester, stp?
 

Pièces jointes

  • proto-proto (Carlettia).xlsm
    61.8 KB · Affichages: 55

Carlettia

XLDnaute Nouveau
Re : Plusieurs tâches complexes VBA et Macro

Bonjour,

Le code marche parceque la plage sélectionné se trouve dans une liste créée et donc la plage considére qu'on sélectionne l'ensemble de la liste.
Oui mais comme je rentre mon verbe d'action via le menu d'un autre feuillet cela fonctionne parfaitement, donc au final la première tâche s'est résolu...
en tout cas ça marche après plusieurs tests dans tout les sens.

Maintenant, le soucis provient de lors de la créationd d'un nouveau feuillet il :
-doit être de la même forme (cellule, taille, fond, liste etc...) que les précedents,
-le nom doit être intégrer dans la liste Types présente dans le feuillet Lancement
-que la liste créee dans le feuillet ai le nom du feuillet

Je vous remercie encore de l'intérêt pour le sujet :)
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : Plusieurs tâches complexes VBA et Macro

Bonsoir Carlettia,

Pas trop de temps ce soir, pas certain d'avoir compris ce que tu voulais et pas convaincu qu'un Userform unique soit la bonne solution :confused:

Pour faire (un peu) avancer le schmilblick, une proposition en annexe:
- ajouté un bouton dans la feuille lancement (le code associé est dans le Module 2)
- sur base d'une "feuille modèle" (comme évoqué précédemment), on demande à l'utilisateur le nom du nouveau domaine. Si une feuille à ce nom existe déjà, la macro s'arrête. Dans le cas contraire, la nouvelle feuille est créée, nommée, une zone nommée (du même nom) est ajoutée.
- comme la police, les couleurs et le code de mon fichier précédent figurent dans la feuille modèle, chaque copie de celle-ci a les mêmes caractéristiques.

Je n'ai vu que maintenant que la discussion était préfixée Excel 2003! Tu n'as rien dit avec mon .xlsm de cet après-midi!? Pas de 2003 sous la main pour tester (seulement de l'Excel 2000 et là, ni les listes, ni les tables n'existaient!)

... à tester, donc!
 

Pièces jointes

  • proto-proto (Carlettia) V2.xls
    148.5 KB · Affichages: 69

Carlettia

XLDnaute Nouveau
Re : Plusieurs tâches complexes VBA et Macro

Bonjour Modeste,

Comme je travail dans une sociétè avec un puissant pare-feu car dans le domaine de la sécuritè nationale je peux très rarement ouvrir les fichiers joints sauf quand je suis chez moi le soir et je t'avouerai que hier soir je n'avais aps la tête à coder :) .

Mais en tout cas l'idée est vraiment super, et j'ai hâte de pouvoir ouvrir ce fichier dés midi.

je n'ai pas encore pu tester ton programme et ne voit pas un désintérer dans mon action loin de là, juste une incapacité à l'ouvrir de mon bureau.

Je te remercie en tout cas de ton dévouement, et je pense que ta façon de voir les choses pour la seconde tâche est vraiment la bonne.

Merci en tout cas, dés que je l'ouvre je te donne des news.

Merci encore
 

Carlettia

XLDnaute Nouveau
Re : Plusieurs tâches complexes VBA et Macro

Bonjour Modeste,

J'ai bien regarder ton code il est réelement super!!!
Vraiment j'ai rien à y redire et il exécute parfaitement ce que je voulais. Je te remercie et te suis reconnaissante pour l'aide que tu as fournis.

Il me reste un petit truc à faire, c'est que lorsque je crée un nom de domaine j'aimerais que le nom du domaine s'intégre à la liste Type (liste des noms de domaines)

cordialement,

Merci encore.
 

Modeste

XLDnaute Barbatruc
Re : Plusieurs tâches complexes VBA et Macro

Bonjour Carlettia,

C'est dans le Module 2 qu'il faut apporter des modifications (puisque c'est là qu'on crée les nouvelles feuilles et les plages nommées ... autant continuer sur notre lancée :rolleyes:)

Juste avant le 'End Sub' final, essaie d'ajouter les 4 lignes suivantes:
VB:
With Sheets("Lancement")
        .Range("D" & .Range("Type").Rows.Count + 2).Value = nomDom
        .[D1].CurrentRegion.Sort Key1:=.[D2], Order1:=xlAscending, Header:=xlYes
End With
Pas pu tester sous 2003!
 

Carlettia

XLDnaute Nouveau
Re : Plusieurs tâches complexes VBA et Macro

Re-bonjour Modeste,

Alors j'ai quelques petites erreures,

la liste créée dans le nouveau feuillet ne prend pas le nom du domaine. Cependant le domaine se met bien dans la liste Type du feuillet Lancement, et donc il est sélectonnable dans le feuillet planing lorsque on choisit le domaine. Mais comme la liste ne prend pas le nom du domaine, elle s'imbrique pas. Alors on ne peut pas sélectionner nos verbes d'actions dans le feuillet planing correspondant au nouveau domaine créé.

Au dela de ça tout fonctionne, à part quelques erreures:

une erreure lorsque je fais un nouveau domaine j'obtiens ça depuis que l'on à ajouter ce noueau code pour intégrer le nom dans la liste Type:

Erreur "1004"

La méthode Sort de la classe Range a échoué.

le debugueur me ramene au nouvelles lignes de codes que l'on vient d'intégrer.

Mais en tout cas comme d'abitude je te suis reconnaissante de l'aide que tu m'apportes, réelement.

Bien cordialement,

modif, apparement la liste prend le nom du domaine, mais je n'arrive pas à la liée au domaine.
Pourquoi je dis ça? Parceque lorsque je sélectionne le nouveau nom de domaine dans mon planning, la liste de lexique associée ne ressort pas :s
Je ne comprends vraiment pas pourquoi
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : Plusieurs tâches complexes VBA et Macro

Bonsoir Carlettia,

la liste créée dans le nouveau feuillet ne prend pas le nom du domaine
Que veux-tu dire? Le nom de domaine n'apparaît pas dans la cellule A1, derrière 'Domaine :'? Ou alors tu n'as pas, dans la nouvelle feuille, de plage nommée (dont le nom correspond au nouveau domaine)?
Ici, les deux semblent fonctionner :confused: même ce que je crois comprendre de ce que tu as indiqué dans ta modification de 14h25' et re:confused:

Pour l'erreur au moment du tri, j'avais apporté une modif à ton fichier (et j'ai oublié de le signaler): dans la feuille "Lancement", le titre de la plage nommée "Type" n'est pas vraiment bien positionné (il me semble qu'il devrait être sur "Domaine" en A1 et non en A2!?) ... reconvertis la liste en plage, puis refais la manipulation dans l'autre sens, en sélectionnant D1 à D7 et en vérifiant que la case relative au titre est bien cochée. Essaie la macro à nouveau après ça et dis-nous si ça coince toujours.
 

Carlettia

XLDnaute Nouveau
Re : Plusieurs tâches complexes VBA et Macro

Bonjour Modeste

Désolé de répondre aussi tard mais quelques soucis de connexions ce matin.

Alors enfaite, lorsque le nouveau feuillet se creer, la liste à l'interieur créée ne prend pas correctement le nom et donc d'une part le nom du domaine ne s'ajoute pas à la liste Type et d'autre part la liste du domaine ne s'imbrique pas.

Donc j'ai fais le test, de renommer manuellement la liste créée dans le nouveau feuillet et là, lrosque le nom du domaine apparait dans la liste Type cela fonctionne dans le feuillet planning.

Je comprends totalement que ce soit compliqué pour toi parceque d'une aprt j'ai du mal à expliquer tout ça, vu que c'est complexe pour moi et d'autre parti tu na pas le fichier 2007.
Alors je te le transmets en converti, si tu peux y jeter un petit coup d'oeil s'ilteplait.

Bien cordialement,

Je te remercie et je m'excuse de toutes ces complications.
 

Pièces jointes

  • proto-proto (Carlettia) V2-2007.xlsx
    39.8 KB · Affichages: 56

Discussions similaires

Statistiques des forums

Discussions
312 495
Messages
2 088 966
Membres
103 993
dernier inscrit
Essens