PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → V20 - Empêcher de Verrouiller les cellules d'un fichier Excel
V20 - Empêcher de Verrouiller les cellules d'un fichier Excel
Débuté par TaWoT, 07 fév. 2018 15:15 - 5 réponses
Membre enregistré
4 messages
Posté le 07 février 2018 - 15:15
Bonjour,

Voilà, je fais une modification dans un fichier excel protégé par un mot de passe. Tout se passe bien sauf que les cellules "déverrouillées" passent en "verrouillées" ... C'est un problème car les utilisateurs ne peuvent plus utiliser les cellules qui leurs sont dédiées. Donc est-ce que vous savez comment éviter à Windev de verrouiller les cellules qui ne le sont pas ?

Voici le code, rien de particulier et je n'ai pour l'instant rien trouvé dans mes recherches.
// Version Windev 20
xls est un xlsDocument
sFichier est une chaîne="fichier.xlsx"

xls = xlsOuvre(sFichier,xlsEcriture) // J'ai essayé avec toutes les options possibles
xlsFeuilleEnCours(xls,xlsNbFeuille(xls))

// Traitement

xlsFeuilleEnCours(xls,1) // on se repositionne sur la première feuille
xlsSauve(xls)
xlsFerme(xls)

Merci de votre aide ! :)
Membre enregistré
41 messages
Popularité : +7 (7 votes)
Posté le 08 février 2018 - 11:48
Bonjour,

Pour contourner ça et avoir la main sur tous les traitements excel , je te conseille d'utiliser la classe Cexcel fourni avec un exemple de windev (pilotage d'excel) qui utilise des objets d'automation autrement dit le vba.
Il se peut même qu'il laisse tes cellules non-verrouillées tranquilles...

il te faudra juste rajouter une méthode à cette classe pour gérer le verrouillage des cellules, ci après un exemple

// cette partie est gérée par la classe Cexcel de windev
pautMonexcel est un objet OLE dynamique
pautMonexcel= allouer un objet OLE "Excel.Application"
pautMonexcel>>Workbooks>>Open("c:\fichier.xlsx")


// protection ... déverrouillage ... rajouter une méthode pour gérer ça
pautMonexcel>>ActiveSheet>>Unprotect // la feuille active ou une autre renseigner le mot de passe éventuellement
pautMonexcel>>ActiveSheet>>Range("la_plage_de_cellule_que_tu_veux")>>Locked = False
pautMonexcel>>ActiveSheet>>Protect
Membre enregistré
4 messages
Posté le 13 février 2018 - 16:46
Bonjour,

Merci beaucoup pour votre réponse !! ça fonctionne comme il faut ! :)

Par contre, est-ce qu'il y a une documentation qui répertorie toutes les fonctions qu'on peut utiliser avec l'objet OLE Dynamique pour Excel car à part des cas particulier c'est tout ce que j'ai trouvé :/ Il y a bien une doc non ?

Merci encore pour votre aide !
Membre enregistré
41 messages
Popularité : +7 (7 votes)
Posté le 13 février 2018 - 18:21
Hello,

cool !

l'objet OLE Excel te permet d'accéder aux objets vba excel, donc c'est plus la doc sur les objets vba excel que tu dois regarder. Par exemple imaginons que tu veuilles colorier une cellule en vert , en vba tu pourrais écrire : Range("B1").Interior.Color = RGB(0, 255, 0)





ce qui donnerait :







Si tu veux l'utiliser sous windev, tu as juste à remplacer les "." par des " >>" (notation WIndev pour les objets ole) et donc pour la même chose tu écrirais en utilisant l'objet ole instancié :

pautMonexcel>>Range("B1")>>Interior>>Color = RVB(0, 255, 0)
Membre enregistré
4 messages
Posté le 14 février 2018 - 09:19
Bonjour :)

Whoua mais c'est juste génial ça !! :D Un Grand Merci !! :)

En plus, avec l'enregistrement des macros ça aide plutôt bien pour trouver les mots clefs ! :)
Et bas c'est parfait pour moi !

Encore merci et bonne journée à toi ! :D
Membre enregistré
41 messages
Popularité : +7 (7 votes)
Posté le 14 février 2018 - 11:00
you're welcome :) , amuse-toi bien et bonne journée également :merci: