Aide pour une macro

Bonjour,

Je suis en train de réaliser un tableau pour le suivi des entretiens sur des machines de chantier.

Mon tableau Excel ce comporte de deux feuilles :

  • La première les différents entretien à réaliser avec des alertes lorsqu'on arrive a echéance
  • La deuxième un simple tableau avec à la verticale le nom des machines et à l'horizontale la date. Dans lequel on doit rentrer les heures de chaque machine en fin de journée.

Mon problème ce pose sur cette deuxième feuille, j'aimerais réaliser une macro afin de facilité le remplissage, pour ne pas galérer à chercher entre les lignes le jours et le nom de la machine.

Est il possible de créer une macro qui s'active à l'ouverture de cette feuille, ou l'on pourrait choisir :

  • le nom de la machine
  • le jour
  • entrer le nombre d'heure
et ainsi la macro s’exécute et rempli la cellule correspondante au jours et à la machine ?

Si quelqu'un à une solution et/ou un coup de pouce à donner de je suis preneur

16suivi-machine.xlsx (83.32 Ko)

Salut Clément,

il faudrait que tu précises ce que tu entends par 'les heures de la machine' !

A quelle cellule de chaque machine correspond cette info?

Etant donné que toutes les machines, dis-tu, doivent être encodées, un simple bouton en première feuille à cliquer en fin de journée ferait le travail à ta place.

Si il y a un calcul à faire avec cette info avant inscription, explique-nous ça!

A+

Bonjour,

Une proposition avec un UserForm. Cliquer le bouton Encodage dans le coin supérieur gauche de Feuil2.

Choisir une machine dans la liste déroulante taper une date dans la zone Date et entrer le nombre d'heures.

Cliquez Validez.

Si c'est terminer cliquer le bouton Terminer.

9suivi-machine.xlsm (94.82 Ko)

Bonsoir le fil, bonsoir le forum,

Une autre proposition, très similaire à celle de Robjam, mais comme je m'étais aussi penché sur ton problème je me permets de te l'envoyé. En principe je commente tous mes codes mais là, désolé, je n'ai pas eu le temps. Si tu as besoin demande moi...

Double-clique dans la plage de cellules fusionnées A1:A3...

Bonsoir,

Parfait c'est exactement ca que je voulais. Petit hic Robjam ta macro fonctionne parfaitement et le faite de rentrer la date sans avoir un menu déroulant est plus pratique surtout si je veux faire durer mon fichier dans le temps par contre la valeur (Nombre d'heure) et en format texte donc mes fonctions feuille 1 ne marche pas .

ThauThème, merci beaucoup ça fonctionne très bien et surtout je peux rajouter des lignes et des colonnes si besoin, en effet si tu as 5 minutes pour me faire un leger tuto sur comment tu as fais je suis preneur.

Merci bonne soirée

Bonjour,

Version corrigée

10suivi-machine.xlsm (95.37 Ko)

Bonjour le fil, bonjour le forum,

Pas vraiment un tuto, juste le code commenté.

• Lance l'éditeur VBE (Visual Basic Editor) avec le raccourci clavier [Alt]+[F11].

• À gauche, double-cliques sur le composant Feuil2(Feuil2). Tu as le code d'ouverture du l'UserForm1

• À gauche, double-clique sur le composant UserForm1 (l'UserForm1 s'affiche dans VBE)

• Touche [F7] pour voir son code

• même raccourci clavier pour fermer VBE...

Le code de l'UserForm1 :

Private O As Worksheet 'déclare la variable O (Onglet)

Private Sub UserForm_Initialize() 'à l'initiaisation de l'Userform
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)

Set O = Worksheets("Feuil2") 'définit l'onglet O
TV = O.Range("A1").CurrentRegion 'définit le tabelau des valeurs TV
For I = 4 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la quatrième)
    Me.ComboBox1.AddItem TV(I, 1) 'ajoute la données ligne I, colonne 1 du tableau des valeur TV à la ComboBox1
Next I 'prochaine ligne de la boucle
For I = 2 To UBound(TV, 2) 'boucle sur toutes les Colonne I du tableau des valeurs TV (en partant de la seconde)
    Me.ComboBox2.AddItem Format(TV(3, I), "dd/mm/yyyy") 'ajoute la donnée ligne 3 colonne I (formatée) à la comboBox2
Next I 'prochaine colonne de la boucle
End Sub

Private Sub CommandButton1_Click() 'bouton "Valider"
Dim LI As Integer 'déclare la variable LI (LIgne)
Dim COL As Integer 'déclare la variable COL (Colonne)

'la propriété ListIndex des ComboBoxes renvoie l'index de l'élément sélectioné (le premier à 0 comme valeur)
'comme le premer élément des machine (l'élément 0) se trouve en ligne 4 on définit LI avec Me.ComboBox1.ListIndex + 4
'comme le premer élément des dates (l'élément 0) se trouve en colonne 2 on définit COL avec Me.ComboBox2.ListIndex + 2

LI = Me.ComboBox1.ListIndex + 4 'définit la ligne LI
COL = Me.ComboBox2.ListIndex + 2 'définit la colonne COL
O.Cells(LI, COL).Value = Me.TextBox1.Value 'renvoie dans la cellule ligne I, colonne COL de l'onglet O, la valeur de la TetxBox1
Unload Me 'vide et ferme l'UserForm
End Sub

Private Sub CommandButton2_Click() 'bouton Annuler
Unload Me 'vide et ferme l'UserForm
End Sub

La version 2 avec le code commenté :

Merci à vous deux pour votre réactivité et le coup de main ! Ainsi que pour les explications ! ))

Bonne soirée et bon week end !

Rechercher des sujets similaires à "aide macro"