Macro inputbox divers problèmes

Hideki

XLDnaute Nouveau
Bonjour tout le monde,


Je me permet de venir demander votre aide car je ne m’en sors plus avec mon super tableau Excel. Ce tableau est destiné à être utilisé par d’autres personnes que moi même, donc le but est de réduire les contraintes au maximum pour celles-ci.

L’idée était donc de créer des macros permettant d’améliorer l’utilisation pour les autres utilisateurs, mais aussi d’éviter certaines.
Comme vous pouvez le voir sur le fichier joint, j’ai crée des macros pour masquer ou afficher certaines plages de cellules.
En plus de cela j’ai créé deux macros, une pour ajouter un poste (ligne + colonne), et une pour supprimer un poste (ligne + colonne également).
Pour supprimer le poste RAS, par contre je souhaiterai améliorer l’ajout de poste si possible, avec plusieurs défis.

Grâce aux différents posts sur le forum j’ai pu malgré tout bien avancer mais certaines difficultés demeurent dans ce que j’aurais souhaité faire.

Pour le bouton « ajouter un poste » :
Après avoir entré les ajouts de ligne et colonne, la box permettrait alors de demander la famille de rattachement du poste et de là lui attribuer une couleur pour sa police.
Par exemple « A quelle famille appartient le poste ? Pour la famille 1 tappez 1, etc.»
Choix 1 : famille 1 (donc couleur X)
Choix 2 : famille 2 (couleur Y)
Choix 3 : famille 3 (couleur Z)

A la suite de cela et en fonction du choix opéré, il serait alors demandé le nom du poste, qui serait écrit dans la cellule correspondant dans la ligne ajoutée (ligne ** / colonne C) mais également dans la colonne ajoutée (ligne 1 / colonne **) (avec la couleur de police adaptée).

Comme je suis sympa, je pousse le vice un peu plus loin, sait-on jamais !

Si l’insertion ou suppression se fait à l’intérieur d’une plage de cellules, cela ne pose pas de problème, cela est bien pris en compte.
Par contre si cela se fait à une extrémité quelques problèmes se posent : le poste ajouté n’est alors rattaché à aucune plage de cellule, et n’est donc pas intégré dans les macros de masquage / affichage de filière.

L’idée serait donc de pouvoir également choisir par la box la filière de rattachement, et en fonction du choix, la plage de cellule serait alors étendue pour pouvoir l’intégrer.

Et en bonus s’il y en a qui ne se sont pas arrachés tous leurs cheveux, il faudrait que la cellule qui marque l’intersection entre la ligne et la colonne ajoutées soit grisée comme c’est le cas pour les autres.


Autre problème que je n’arrive pas à résoudre, en lien avec la demande précédente :
Lorsque un poste est ajouté, il copie les cellules coloriées présentes à la ligne au dessus, et à la colonne de gauche.
Malgré mes recherches je n’arrive pas à faire en sorte que le fond des cellules environnantes ne soit pas copié, si quelqu’un a l’astuce …


Désolé pour tout le blabla, j’espère que cela vous aura malgré tout aidé à cerner les difficultés, si cela n’est pas clair n’hésitez pas à me demander plus d’informations.

Pour l’instant j’essaye de bidouiller dans les macros mais je suis vraiment loin du résultat souhaité étant débutant en la matière.
Je ne sais pas si tout ce que je vous demande est faisable mais bon je tente ma chance des fois que ...


Merci d’avance à ceux qui prendront la peine de m’aider. En espérant que ça ne soit pas mission impossible ^^


PS : je tourne avec la version 2000 d'excel
 

Pièces jointes

  • Tableau_test.zip
    16.8 KB · Affichages: 50
  • Tableau_test.zip
    16.8 KB · Affichages: 51
  • Tableau_test.zip
    16.8 KB · Affichages: 53

Hideki

XLDnaute Nouveau
Re : Macro inputbox divers problèmes

Bonjour,

Je me permet un petit UP, si une âme charitable voulait bien me venir en aide (ou même plusieurs ^^), sachant que c'est pour un projet à rendre avant la fin du mois et que j'aurais bien aimé que le fichier soit optimisé dans les moindres détails.

De mon côté je continue mes recherches mais j'avoue que je bloque un peu (beaucoup).


Merci à vous !!
 

Hideki

XLDnaute Nouveau
Re : Macro inputbox divers problèmes

Merci de ta réponse klin89 ;)
Je vais aller jeter un oeil sur le post voir si cela peut m'aider.


Pour reformuler mes demandes :

Dans la macro qui permet d'ajouter une ligne et une colonne, plusieurs choses :

- Faire en sorte que lorsqu'une ligne et une colonne est ajoutée par le biais de la macro, le fond des cellules de la ligne au dessus et de la colonne située à gauche ne soient pas copiés.

- la box devrait demander un texte à ajouter dans des cellules déterminées de la ligne et colonne ajoutée, tout en permettant le choix de la couleur de la police

- L'insertion se fait dans une plage de cellule déterminée, si l'insertion se fait à l'une des extrémités d'une plage de cellule, elle n'est intégrée dans aucune plage, ce qui oblige à les actualiser manuellement.
Je voudrais donc savoir s'il est possible, toujours à travers la même macro, d'opérer un choix de rattachement à l'une des différentes plages de cellules pour l'actualiser

- Pouvoir griser la cellule qui se situe à l'intersection de la ligne et de la colonne ajoutée.


Merci pour votre aide, et en espérant que cela soit moins confu.
 
Dernière édition:

klin89

XLDnaute Accro
Re : Macro inputbox divers problèmes

Re Hideki,

Tu dis :

- Faire en sorte que lorsqu'une ligne et une colonne est ajoutée par le biais de la macro, le fond des cellules de la ligne au dessus et de la colonne située à gauche ne soient pas copiés.

Dans le Sub AjoutPoste()

Essaies ceci :

Code:
Rows(wt).Interior.ColorIndex = xlNone

Code:
Columns(rt).Interior.ColorIndex = xlNone

Klin89
 

Hideki

XLDnaute Nouveau
Re : Macro inputbox divers problèmes

yes ça marche impec !

Je viens de le mettre sur mon fichier de base.

Merci beaucoup !!


Pour l'insertion de texte grâce à la macro pour l'instant je bloque, mais ça avance bien grâce à toi, encore merci ;)
 

Hideki

XLDnaute Nouveau
Re : Macro inputbox divers problèmes

Bonjour,

Je reviens vers vous toujours avec mes éternels problèmes :(


J'essaye de voir pour ajouter un nom de métier par le biais de la macro "ajout de métier"

Voilà le code :

Sub AjoutPoste()
Dim wt As String
wt = InputBox("A partir de quelle ligne souhaitez vous insérer un métier ? (La ligne sera insérée au dessus)", "Ajout de métier")
If wt = "" Then Exit Sub
If wt > 0 And wt < 5000 Then Rows(wt).Insert Shift:=xlDown
Rows(wt).Interior.ColorIndex = xlNone

Dim rt As String
rt = InputBox("A partir de quelle colonne souhaitez vous insérer un métier ? (La colonne sera insérée à gauche)", "Ajout de métier")
If rt = "" Then Exit Sub
cols = Split(rt, ",")
For i = UBound(cols, 1) To 0 Step -1
Columns(Range(cols(i) & 1).Column).Insert
Columns(rt).Interior.ColorIndex = xlNone

Dim metierdepart As String
Range("C:wt").Select
Selection.End(xlUp).Offset(1, 0).Select
metier = InputBox(" Quel est l'intitulé du métier de départ ?")
ActiveCell.Value = metier

Dim metiercible As String
Range("rt:1").Select
Selection.End(xlUp).Offset(1, 0).Select
metiercible = InputBox(" Quel est l'intitulé du métier cible ?")
ActiveCell.Value = metiercible
Next

Range("Start").Activate

End Sub


La ligne et la colonne s'ajoutent bien, il est bien demandé les noms des métiers de départ et cibles, mais rien n'est rentré (et au final la macro bug)

Si quelqu'un a une idée de ce qui ne va pas, merci de votre aide.
 

Paritec

XLDnaute Barbatruc
Re : Macro inputbox divers problèmes

Bonjour Hideki le forum,
tu veux ajouter avec la macro "Ajout Métier" et là tu donnes la macro 'Ajout poste" ????????
ou alors j'ai pas compris ??? !!!!!
Bref ton texte après tu veux l'insérer ou ? quel type de texte? en final donnes des éléments et tu auras des réponses
un bout fichier avec un exemple de ce que tu as avant et ce que tu veux après
a+
Papou
 

Hideki

XLDnaute Nouveau
Re : Macro inputbox divers problèmes

Bonjour Paritec (ou Papou) (sans oublier le reste du forum)

Pour les intitulés (poste / métier) c'est juste pour me repérer dans le code.

Le fichier exemple se situe dans mon premier message, les éléments de ce que je souhaite faire également, mais je les reprend ici :

Par le biais de la macro « ajouter un poste » :
Après avoir entré les ajouts de ligne et colonne, une box demandrait alors l'intitulé du métier à ajouter (chose que j'ai essayé de séparer en deux parties pensant que ça marcherait plus simplement)


L'intitulé du métier serait alors écrit dans la cellule correspondant dans la ligne ajoutée (ligne ** (wt dans mon code)/ colonne C) mais également dans la colonne ajoutée (ligne 1 / colonne ** (rt dans mon code)).


En bonus j'aimerais pouvoir choisir la couleur de la police du métier ajouté, en opérant trois choix par le biais d'une box, mais bon chaque chose en son temps ^^

De même j'essaye de trouver un code permettant de "griser" la cellule se situant à l'intersection de la ligne et de la colonne ajoutée.

Merci pour votre aide.
 

Hideki

XLDnaute Nouveau
Re : Macro inputbox divers problèmes

Rebonjour,


Je m'apporte un début de réponse si cela peut en aider d'autres :

Sub AjoutPoste()

Dim Ajout_metier As String
Metier = InputBox("Quel est l'intitulé du nouveau métier ?", "Ajout métier")

Dim wt As String
wt = InputBox("A partir de quelle ligne souhaitez vous insérer un métier ? (La ligne sera insérée au dessus)", "Ajout de métier")
If wt = "" Then Exit Sub
If wt > 0 And wt < 5000 Then Rows(wt).Insert Shift:=xlDown
Rows(wt).Interior.ColorIndex = xlNone
Range("C" & wt).Select
ActiveCell.Value = Metier

Dim rt As String
rt = InputBox("A partir de quelle colonne souhaitez vous insérer un métier ? (La colonne sera insérée à gauche)", "Ajout de métier")
If rt = "" Then Exit Sub
cols = Split(rt, ",")
For i = UBound(cols, 1) To 0 Step -1
Columns(Range(cols(i) & 1).Column).Insert
Columns(rt).Interior.ColorIndex = xlNone
Range(rt & "1").Select
ActiveCell.Value = Metier

Next

Range("Start").Activate

End Sub


En procédant ainsi, le choix rentré dans la listbox se faisant en premier, il est ensuite inséré dans la cellule correspondant de la ligne et colonne ajoutées.

Mon erreur se situait au niveau de la sélection car le code n'était pas bon.


Reste à trouver comment faire pour opérer un choix entre trois couleurs de texte pour l'appliquer au texte.
Par rapport au code déjà crée je suppose qu'il faudrait opérer ce choix en premier avant de rentrer le texte.

Si quelqu'un a une solution ...
Pour ma part je continue mes recherches ...
 

Hideki

XLDnaute Nouveau
Re : Macro inputbox divers problèmes

Aller je me répond encore, ce n'était pas trop compliqué en fait :

Sub AjoutPoste()

Dim Ajout_metier As String
Metier = InputBox("Quel est l'intitulé du nouveau métier ?", "Ajout métier")

Dim Couleur As String
Couleur = InputBox("A quelle famille est rattachée le métier ? 1 : Coeur de métier ; 2 : Support au coeur de métier ; 3 : Support général", "Ajout de métier")

Dim wt As String
wt = InputBox("A partir de quelle ligne souhaitez vous insérer un métier ? (La ligne sera insérée au dessus)", "Ajout de métier")
If wt = "" Then Exit Sub
If wt > 0 And wt < 5000 Then Rows(wt).Insert Shift:=xlDown
Rows(wt).Interior.ColorIndex = xlNone
Range("C" & wt).Select

If Couleur = 1 Then
Selection.Font.ColorIndex = 5
End If

If Couleur = 2 Then
Selection.Font.ColorIndex = 13
End If

If Couleur = 3 Then
Selection.Font.ColorIndex = 4
End If

ActiveCell.Value = Metier


Dim rt As String
rt = InputBox("A partir de quelle colonne souhaitez vous insérer un métier ? (La colonne sera insérée à gauche)", "Ajout de métier")
If rt = "" Then Exit Sub
cols = Split(rt, ",")
For i = UBound(cols, 1) To 0 Step -1
Columns(Range(cols(i) & 1).Column).Insert
Columns(rt).Interior.ColorIndex = xlNone
Range(rt & "1").Select

If Couleur = 1 Then
Selection.Font.ColorIndex = 5
End If

If Couleur = 2 Then
Selection.Font.ColorIndex = 13
End If

If Couleur = 3 Then
Selection.Font.ColorIndex = 4

End If
ActiveCell.Value = Metier


Next

Range("Start").Activate

End Sub



Si quelqu'un a une idée pour griser la cellule à l'intersection de la ligne et de la colonne ajoutées par la macro ...
De même pour étendre une plage de cellule automatiquement en fonction d'un choix opéré dans la macro.


Edit (je me répond encore, ça m'éclate ^^) :
Pour selectionner la cellule à l'intersection et la griser :

Range(rt & wt).Select
Selection.Interior.ColorIndex = 15

J'ai perdu du temps là dessus en partant sur la commande "If Intersect ... Is Nothing Then" alors qu'en fait je pouvais m'en passer, j'aurais dû commencer par le plus simple ...



Reste toujours encore un défi à remplir et j'aurais fais tout ce que je voulais sur le tableau ...
 
Dernière édition:

skoobi

XLDnaute Barbatruc
Re : Macro inputbox divers problèmes

Bonjour Hideki,

Si quelqu'un a une idée pour griser la cellule à l'intersection de la ligne et de la colonne ajoutées par la macro
A la fin du code ajoute:

Code:
Range(rt & wt).Interior.ColorIndex = 15
Une remarque concernant le code ici:
Code:
cols = Split(rt, ",")
For i = UBound(cols, 1) To 0 Step -1
Columns(Range(cols(i) & 1).Column).Insert
......
......
Next
Il n'y à pas besoin de tout ça pour insérer une colonne, ceci suffit:
Code:
Columns(rt).Insert
.........
.......
Où alors j'ai pas compris ce que tu veux faire comme insertion

De même pour étendre une plage de cellule automatiquement en fonction d'un choix opéré dans la macro.
C'est-à-dire?
 

Hideki

XLDnaute Nouveau
Re : Macro inputbox divers problèmes

Merci pour ta réponse, je crois qu'on s'est croisé pour le "grisement" de l'intersection (voir le message précédent édité)

Effectivement je pouvais alléger la partie pour ajouter une colonne, merci ^^


Concernant l'extension des plages de cellules :

L'insertion d'un métier se fait dans une plage de cellule déterminée (qui correspond à une filière de rattachement), si l'insertion se fait à l'une des extrémités d'une plage de cellule, elle n'est intégrée dans aucune plage, ce qui oblige à les actualiser manuellement.
Je voudrais donc savoir s'il est possible, toujours à travers la même macro, d'opérer un choix de rattachement à l'une des différentes plages de cellules et de l'actualiser au passage


(Voir fichier joint dans le premier message)


Encore merci ;)
 

Discussions similaires

Réponses
17
Affichages
690

Statistiques des forums

Discussions
312 215
Messages
2 086 324
Membres
103 179
dernier inscrit
BERSEB50