Insertion code Microsoft Excel Objects vba

jibdu64

XLDnaute Nouveau
Bonjour,

j'ai une macro qui me crée une feuille, dans laquelle s'insère un bouton.
A ce bouton un userform est affecté (toujours avec la macro précédente).
Problème, cet userform permet a l'utilisateur de colorier la feuille active et pour cela, il faut que j'insère un code dans "Microsoft Excel Object" a Feuil? (Gourette).
Ce "module" (je ne connais pas le nom de ces Object Microsoft) ce génère automatiquement lors de la création de la feuille et je ne sais donc pas comment y inséré mon code ..

Pouvez vous m'aider ?



Voici le code a y inserer :


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If actif Then
Selection.Interior.Color = UserForm.CommandButton_couleur.BackColor
Selection.Value = UserForm.CommandButton_couleur.Caption
End If
End Sub



J'espère avoir été clair..
Merci pour votre attention, en espérant que quelqu'un puisse m'aider, je vous souhaite une agréable journée
 

ERIC S

XLDnaute Barbatruc
Re : Insertion code Microsoft Excel Objects vba

Bonjour

sans fichier c'est délicat
quand tu crées ton bouton, il faudrait que ce soit un "contrôle de formulaire" car tu peux facilement y associer une macro qui serait dans un module, et non sur la feuille

ActiveSheet.Shapes("Button 1").Select
Selection.OnAction = "Macro1"

obtenu par enregistreur de macro
 

jibdu64

XLDnaute Nouveau
Re : Insertion code Microsoft Excel Objects vba

Oui pardon, j'avais oublié le fichier.

Voila en fait, quand on clique sur le premier bouton, cela généré une nouvelle feuille qui possède un bouton. Quand on clique dessus un carré coloré s'affiche, mais on ne peut pas reproduire la mise en forme du carré(couleur et lettre), a moins d'insérer manuellement dans Visual Basic/Microsoft Excel Objects/ Feuil?(color) le code suivant

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If actif Then
Selection.Interior.Color = UserForm.CommandButton_couleur.BackColor
Selection.Value = UserForm.CommandButton_couleur.Caption
End If
End Sub


Existe t-il une solution pour le générer automatiquement ?
 

Pièces jointes

  • Userform_Color.xlsm
    19.3 KB · Affichages: 29

ERIC S

XLDnaute Barbatruc
Re : Insertion code Microsoft Excel Objects vba

Re

il faut que j'y aille, pour l'instant je ne vois pas trop ce que tu veux faire et pourquoi

une solution serait de créer une feuille (avec bouton et macro, masquée
l'appui sur générer se transformerait en une copie de feuille (non masquée)
 

jibdu64

XLDnaute Nouveau
Re : Insertion code Microsoft Excel Objects vba

Ta solution ne semble pas jouable, car j'ai simplifier le fichier pour ne pas avoir une surabondance de code.
Mais en fait quand tu cliques sur génerer il est demandé l'année et la station, et donc le nom de la feuille en découle ..

Je semble dans une impasse
 

Dranreb

XLDnaute Barbatruc
Re : Insertion code Microsoft Excel Objects vba

Bonjour.

La solution de ERIC S me semble tout à fait jouable. Pouver vous réexpliquer différemment votre incompréhensible objection ?

Pour ce qui est de détecter une sélection de cellule dans la feuille créée, voir si le problème ne pourrait pas se résoudre avec une Workbook_SheetChange dans ThisWorkbook, ou même mieux un Excel_SheetSelectionChange dans l'Userform. Pour cette dernière solution il faut Dim WithEvents Excel As Application en tête, et l'initialiser par Set Excel = Application dans l'Userform_Initialise.

Code complet de l'Userform :
VB:
Dim WithEvents Excel As Application

Private Sub UserForm_Initialize()
Set Excel = Application
CommandButton_couleur_Click
End Sub

Private Sub CommandButton_couleur_Click()
Randomize
CommandButton_couleur.BackColor = RGB(Int(255 * Rnd) + 1, Int(255 * Rnd) + 1, Int(255 * Rnd) + 1)
End Sub

Private Sub Excel_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Target.Interior.Color = CommandButton_couleur.BackColor
End Sub
Mettre sa proriété ShowModal à False.
 
Dernière édition:

jibdu64

XLDnaute Nouveau
Re : Insertion code Microsoft Excel Objects vba

oui oui oui oui oui !!!!!

Merci Merci Merci Merci infiniment a vous deux (Dranreb & gilbert_RGI).

J'ai utilisé la solution de Dranreb qui est simplement super et qui répond parfaitement a mon problème, mais merci quand meme a toi gilbert_RGI car malgré l'erreur qui aparaissait dans le fichier que tu m'avais envoyé, cette solution semblé bonne aussi.

Merci beaucoup d'avoir pris le temps pour moi
 

jibdu64

XLDnaute Nouveau
Re : Insertion code Microsoft Excel Objects vba

Au passage, j'ai rajouté d'autre boutons pour le choix des couleurs mais sa ne prend en compte que le premier, voici le code:

Dim WithEvents Excel As Application

Private Sub CommandButton_couleur_Click()
d = 0
End Sub
Private Sub CommandButton1_Click()
d = 1
End Sub
Private Sub CommandButton2_Click()
d = 2
End Sub

Private Sub CommandButton3_Click()
d = 3
End Sub

Private Sub CommandButton4_Click()
d = 4
End Sub

Private Sub UserForm_Initialize()

Set Excel = Application

CommandButton_couleur.BackColor = vbBlue
CommandButton_couleur.Caption = "1"
CommandButton1.BackColor = vbWhite
CommandButton1.Caption = "1"
CommandButton4.BackColor = vbBlue - 100
CommandButton4.Caption = "rep"
CommandButton3.BackColor = vbBlue - 30
CommandButton3.Caption = "R"
CommandButton2.BackColor = vbBlue - 1
CommandButton2.Caption = "dom"


actif = True
End Sub

Private Sub UserForm_Terminate()
actif = False
End Sub

Private Sub Excel_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If d = 0 Then
Target.Interior.Color = CommandButton_couleur.BackColor
Target = CommandButton_couleur.Caption
ElseIf d = 1 Then
Target.Interior.Color = CommandButton1.BackColor
Target = CommandButton1.Caption
ElseIf d = 2 Then
Target.Interior.Color = CommandButton2.BackColor
Target = CommandButton2.Caption
ElseIf d = 3 Then
Target.Interior.Color = CommandButton3.BackColor
Target = CommandButton3.Caption
ElseIf d = 4 Then
Target.Interior.Color = CommandButton4.BackColor
Target = CommandButton4.Caption
End If
End Sub



Savez-vous ou se trouve l'erreur ?
 

Dranreb

XLDnaute Barbatruc
Re : Insertion code Microsoft Excel Objects vba

d est une variable locale dans chaque procédure. Elle n'est pas conservée. Si vous voulez qu'elle soit conservée et partagée par toutes les procédures, vous devez la déclarer en tête de l'Userform.

Information: J'ai un module dédié aux calculs de couleurs si ça vous intéresse.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T