Bonjour,
J'interviens dans la création d'un petit "logiciel" de gestion de KPI avec Excel. Je précise que mes connaissances du VBA sont proches de 0, et que je me suis débrouillé jusque là avec les moyens du bord. Il se peut donc que ce code vous paraisse totalement amateur, c'est le cas. C'est du bricolage.
Le code que je vous soumet sur lequel je bloque est l'action de mon UserForm "Sortie d'un salarié".
On sélectionne le nom du salarié (Combobox3), le numéro de la semaine (Combobox2), et on clique sur confirmer la sortie (CommandButton1)
De la les actions voulues sont :
- Rechercher dans une plage d'entêtes dans la feuille "PARAMETRES" cacher la colonne qui a pour entête le nom du salarié (Combobox3)
- Dans la feuille "suivi heures" cacher la ligne qui a pour entête le nom du salarié (Combobox3)
- Dans chacune des 52 feuilles qui représentent chacune des 52 semaines qui sont les 52 premières feuilles du classeur pour coller à l'index, cacher la colonne qui a pour entête le nom du salarié (Combobox3), à partir de la semaine précisée (Combobox2)
Je précise que tout marche pour l'ajout des salariés.
L'erreur : 1004 : La méthode Select de la classe Range a échoué (sur la ligne surlignée dans le code ci dessous)
Private Sub CommandButton1_Click()
If MsgBox("Confirmez vous la sortie du salarié ?", vbYesNo, "Confirmation de la sortie") = vbYes Then
With Sheets("PARAMETRAGE").Range("b7:aq7")
Dim c As Range
Set c = .Find(ComboBox3.Value, LookIn:=xlValues)
If Not c Is Nothing Then firstAddress = c.Address
c.Select
Selection.EntireColumn.Hidden = True
End With
With Sheets("suivi heures").Range("b2:b41")
Dim c As Range
Set c = .Find(ComboBox3.Value, LookIn:=xlValues)
If Not c Is Nothing Then firstAddress = c.Address
c.Select
Selection.EntireRow.Hidden = True
End With
a = ComboBox2.Value
boucle1:
a = a + 1
If a <= 52 Then GoTo test1 Else GoTo test2
test1:
With Sheets(a).Range("b2:ax2")
Dim d As Range
Set d = .Find(ComboBox3.Value, LookIn:=xlValues)
If Not d Is Nothing Then firstAddress = c.Address
Selection.EntireColumn.Hidden = True
End With
GoTo boucle1
test2:
With Sheets(a).Range("b2:ax2")
Set d = .Find(ComboBox3.Value, LookIn:=xlValues)
If Not d Is Nothing Then firstAddress = c.Address
Selection.EntireColumn.Hidden = True
End With
End If
End Sub
D'avance merci à vous pour votre aide.
J'interviens dans la création d'un petit "logiciel" de gestion de KPI avec Excel. Je précise que mes connaissances du VBA sont proches de 0, et que je me suis débrouillé jusque là avec les moyens du bord. Il se peut donc que ce code vous paraisse totalement amateur, c'est le cas. C'est du bricolage.
Le code que je vous soumet sur lequel je bloque est l'action de mon UserForm "Sortie d'un salarié".
On sélectionne le nom du salarié (Combobox3), le numéro de la semaine (Combobox2), et on clique sur confirmer la sortie (CommandButton1)
De la les actions voulues sont :
- Rechercher dans une plage d'entêtes dans la feuille "PARAMETRES" cacher la colonne qui a pour entête le nom du salarié (Combobox3)
- Dans la feuille "suivi heures" cacher la ligne qui a pour entête le nom du salarié (Combobox3)
- Dans chacune des 52 feuilles qui représentent chacune des 52 semaines qui sont les 52 premières feuilles du classeur pour coller à l'index, cacher la colonne qui a pour entête le nom du salarié (Combobox3), à partir de la semaine précisée (Combobox2)
Je précise que tout marche pour l'ajout des salariés.
L'erreur : 1004 : La méthode Select de la classe Range a échoué (sur la ligne surlignée dans le code ci dessous)
Private Sub CommandButton1_Click()
If MsgBox("Confirmez vous la sortie du salarié ?", vbYesNo, "Confirmation de la sortie") = vbYes Then
With Sheets("PARAMETRAGE").Range("b7:aq7")
Dim c As Range
Set c = .Find(ComboBox3.Value, LookIn:=xlValues)
If Not c Is Nothing Then firstAddress = c.Address
c.Select
Selection.EntireColumn.Hidden = True
End With
With Sheets("suivi heures").Range("b2:b41")
Dim c As Range
Set c = .Find(ComboBox3.Value, LookIn:=xlValues)
If Not c Is Nothing Then firstAddress = c.Address
c.Select
Selection.EntireRow.Hidden = True
End With
a = ComboBox2.Value
boucle1:
a = a + 1
If a <= 52 Then GoTo test1 Else GoTo test2
test1:
With Sheets(a).Range("b2:ax2")
Dim d As Range
Set d = .Find(ComboBox3.Value, LookIn:=xlValues)
If Not d Is Nothing Then firstAddress = c.Address
Selection.EntireColumn.Hidden = True
End With
GoTo boucle1
test2:
With Sheets(a).Range("b2:ax2")
Set d = .Find(ComboBox3.Value, LookIn:=xlValues)
If Not d Is Nothing Then firstAddress = c.Address
Selection.EntireColumn.Hidden = True
End With
End If
End Sub
D'avance merci à vous pour votre aide.