XL 2013 Enregistrer d'un Usf dans une feuille masquée excel vba

RMA20

XLDnaute Nouveau
Bonjour a tous,
c'est la première fois ou je poste qlq chose..
j'ai un problème. J'ai un fichier Excel qui contient une feuille ou j'enregistre des résultats d'un calcul donc l'utilisateur ne se sert que par l’intermédiaire d'un macro. N'ayant pas l'utilité de toucher la feuille, je l'ai masqué. Le problème est que dans ma macro, les étapes Worksheets("productivity").Range("b1").End(xlDown).Offset(1, 0).Select .....je sais pas le prob ms je pense qu'il ne fonctionne pas car la feuille est masqué...
voici mon code vba :

Private Sub saveinws()

Dim aa
aa = CInt(txttotal) - CInt(txtabsent) - CInt(txtadjuster) - CInt(txtgalia) - CInt(txtquality) - CInt(txtother)
If cmbshift = "Nuit" Then
Worksheets("productivity").Range("b1").End(xlDown).Offset(1, 0).Select
ActiveCell.Value = aa
ActiveCell.Offset(0, 1).Value = txtabsent.Value
caseeffectif.Value = aa
ElseIf cmbshift = "Matin" Then
Worksheets("productivity").Range("e1").End(xlDown).Offset(1, 0).Select
ActiveCell.Value = aa
ActiveCell.Offset(0, 1).Value = txtabsent.Value
caseeffectif.Value = aa
ElseIf cmbshift = "Après midi" Then
Worksheets("productivity").Range("h1").End(xlDown).Offset(1, 0).Select
ActiveCell.Value = aa
ActiveCell.Offset(0, 1).Value = txtabsent.Value
caseeffectif.Value = aa
End If

End Sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @RMA20,
Bienvenue sur XLD :)
il ne fonctionne pas car la feuille est masqué...

Vous avez bien vu. VBA ne peut sélectionner pas une feuille masquée, tout comme au sein d'Excel vous ne pouvez pas sélectionner une feuille cachée.

La plupart du temps il est inutile (et ça ralenti considérablement l’exécution) de sélectionner des cellules. On peut directement affecter une valeur à une cellule sans la sélectionner.
VB:
Private Sub saveinws()
Dim aa
   aa = CInt(txttotal) - CInt(txtabsent) - CInt(txtadjuster) - CInt(txtgalia) - CInt(txtquality) - CInt(txtother)
   With Worksheets("productivity")
      If cmbshift = "Nuit" Then
         .Range("b1").End(xlDown).Offset(1, 0) = aa
         .Range("b1").End(xlDown).Offset(1, 1) = txtabsent.Value
         caseeffectif.Value = aa
      ElseIf cmbshift = "Matin" Then
         .Range("e1").End(xlDown).Offset(1, 0) = aa
         .Range("e1").End(xlDown).Offset(1, 1) = txtabsent.Value
         caseeffectif.Value = aa
      ElseIf cmbshift = "Après midi" Then
         .Range("h1").End(xlDown).Offset(1, 0) = aa
         .Range("h1").End(xlDown).Offset(1, 1) = txtabsent.Value
         caseeffectif.Value = aa
      End If
   End With
End Sub
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Ou:
VB:
Private Sub saveinws()
Dim aa, addr
   aa = CInt(txttotal) - CInt(txtabsent) - CInt(txtadjuster) - CInt(txtgalia) - CInt(txtquality) - CInt(txtother)
   If cmbshift = "Nuit" Then addr = "b1"
   If cmbshift = "Matin" Then addr = "e1"
   If cmbshift = "Après midi" Then addr = "h1"
 
   With Worksheets("productivity")
      .Range(addr).End(xlDown).Offset(1, 0) = aa
      .Range(addr).End(xlDown).Offset(1, 1) = txtabsent.Value
      caseeffectif.Value = aa
   End With
End Sub
 

Discussions similaires

Réponses
21
Affichages
1 K
  • Question
Microsoft 365 Code VBA
Réponses
2
Affichages
424