Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
893 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Erreur 1004 - cellule protégée et en lecture seule

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur 1004 - cellule protégée et en lecture seule

n°1958888
Haloavanda​ha
Posté le 20-01-2010 à 06:32:18  profilanswer
 

Bonjour à tous,
 
J'ai un soucis concernant un fichier Excel. Je vous résume très brievement la situation.
Un document semaine x .xls et un autre bilan x .xls. (x est un numero de semaine)
Dans le document semaine x, sont saisie des noms de personnes, ainsi que le calcul de leurs horaires effectuées.
Le probleme se situe sur mon document bilan x. Celui ci a un bouton "actualiser", qui récupère des informations dans semaine x afin de remplir certaines cellules.
Lorsque je clique sur le bouton "actualiser", il y a une erreur qui est générée.
 
"Erreur d'exécution 1004
La cellule ou le graphique est protégé et en lecture seule
Pour modifier une celulle ou un graphique protégé, ôtez la protection avec la commande Ôter la protection de la feuille (Outils, Protection). Vous devrez peut-être taper un mot de passe.
"
 
J'ai bien sur vérifier l'attribut du fichier, et essayer de ôter, et protéger la feuille, mais l'erreur reste la même.
Voici le code derrière mon bouton :
 
Function convertdec(num As Double)
num = Round(num, 2)
convertdec = Fix(num) & "." & CInt(100 * (num - Fix(num)))
End Function
 
Function maj()
    'Mise a jour Bilans
    Sheets("Bilan" ).Select
    'Enlève la protection
    lol = unprotec()
    '____________________
    'mise a jour bilan SSIS chefs
    colonne = Chr(64 + Range("debut_calcul_heure_SSIS_chefs" ).Columns.Column)
    For i = Range("debut_calcul_heure_SSIS_chefs" ).Columns.Row To Range("fin_calcul_heure_SSIS_chefs" ).Columns.Row
        Range(colonne & i).Select
        ActiveCell.FormulaR1C1 = "=SommeHeure(" & convertdec(heureffecSSIS(Range("A" & i).Value)) & " ,RC[4])"
    Next
    'mise a jour SSIS pompiers
    For i = Range("debut_calcul_heure_SSIS_pompiers" ).Columns.Row To Range("fin_calcul_heure_SSIS_pompiers" ).Columns.Row
        Range(colonne & i).Select
        ActiveCell.FormulaR1C1 = "=SommeHeure(" & convertdec(heureffecSSIS(Range("A" & i).Value)) & " ,RC[4])"
    Next
    'Remet la protection
    lol = protec()
    '____________________
End Function
Sub Actueheures()
Application.ScreenUpdating = False
lol = maj()
Sheets("Bilan" ).Select
ActiveWorkbook.Save
Application.ScreenUpdating = True
End Sub

 
Je reste à votre disposition pour des renseignements si je me suis mal exprimé.
Merci d'avoir lu :)


Message édité par Haloavandaha le 20-01-2010 à 06:33:39
mood
Publicité
Posté le 20-01-2010 à 06:32:18  profilanswer
 

n°1961086
Laoo
Posté le 28-01-2010 à 10:17:44  profilanswer
 


 
Bonjour
 
Tu n'as pas eu bcp de réponses!
 
As-tu trouver ce que tu cherchais?
 
Puis-je te faire qq remarques?
 
1) Column et Row suffisent, pas besoin de Columns en plus   (détail)
 
   
2) Beaucoup plus grave:  Tu mélanges dans une formule des codes et valeurs de ta macro avec des codes et valeurs de la feuille, c'est imposible!!
 
      ActiveCell.FormulaR1C1 = "=SommeHeure(" & convertdec(heureffecSSIS(Range("A" & i).Value)) & " ,RC[4])"
 
une fois sorties de la macro, les variables  (SommeHeure)  et Range("A" & i).Value n'ont plus aucune valeur, donc tu ne peux les inscrire dans une FORMULE sur la feuille.
 
si tu veux utiliser des valeurs de variables, inscris-les d'abord sur ta feuille, puis, dans ta formule inscris les références aux cellules voulues, et de façon appropriée!
 
si tu mets par exple la valeur de  SommeHeure   en col H de la même ligne, soit:
                     Range("H" & i).Value = SommeHeure  
 
tu mets ds ta formule:      "= RC8
 
quant à la suite: convertdec(heureffecSSIS(Range("A" & i).Value))    ???
 
admettons que       convertdec(heureffecSSIS(        fonctionne,  ceci en revanche, jamais!  :
 
Range("A" & i).Value))  
 
au mieux, tu dois écrire:  RC1   , si tu es bien ds une colonne différente de A !
 
une fois que tu auras rectifié ta formule pour qu'elle fonctionne, tu peux fixer la valeur de la cellule avec ceci:
 
ActiveCell.Value = ActiveCell.Value
 
tu as alors une valeur et non plus une formule.
 
et si tu veux, tu supprimes la valeur en colonne H:
Range("H" & i).Value = ""
 
 
mêmes remarques pour la suite:
     
    'mise a jour SSIS pompiers
    For i = Range("debut_calcul_heure_SSIS_pompiers" ).Columns.Row To Range("fin_calcul_heure_SSIS_pompiers" ).Columns.Row
        Range(colonne & i).Select
        ActiveCell.FormulaR1C1 = "=SommeHeure(" & convertdec(heureffecSSIS(Range("A" & i).Value)) & " ,RC[4])"
 
 
Cordialement
 
Je reste à également à ta disposition pour des renseignements si je me suis mal exprimé.
   
Et MERCI aux pompiers qui font un travail formidable!

n°1966344
Haloavanda​ha
Posté le 15-02-2010 à 22:32:53  profilanswer
 

Merci Laoo et désolé pour cette réponse un peu tardive...
Je tenais à préciser en fait que je ne suis pas développeur... et que quand je vois du code, j'ai parfois envie de vomir... ce document excel avait été fait par un prédécesseur, et pas facile de se plonger dedans quand on y est allergique... tout ça pour dire qu'il y a quelques lignes de ton explication que je n'ai pas comprise ^^
Mais je me suis débrouillé à retrouver une vieille sauvegarde du document qui fonctionnait, avec seulement 2 ou 3 bricoles à rectifier en interface... beaucoup plus facile pour moi :)
En tous cas, merci encore !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Erreur 1004 - cellule protégée et en lecture seule

 

Sujets relatifs
Erreur mémoire ApacheJGraph et selection cellule
lecture de trameConcaténer plusieurs variables dans une seule avec séparateur?
erreur 424 des tuyaux svpHel me erreur que je ne connais pas
Conversion caractère -> nombre, erreurErreur Requête basique
[Java3D/Swing] Du Java3D dans une cellule de JTableErreur d'une requéte trés trés simple
Plus de sujets relatifs à : Erreur 1004 - cellule protégée et en lecture seule


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR