IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Verrouiller cellule contenant des formules


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 164
    Points : 43
    Points
    43
    Par défaut Verrouiller cellule contenant des formules
    salut a tous

    je realise un projet de creation de devis , et j'aimerais empecher l'effacement de certaines cellules contenant des formules (tout simplement ma colonne prix HT = quantité*Prix unitaire) car qd je cree un nouveau devis je veux effacer tout les champs de l'ancien mais concerver les formules (evidement)

    j'ai essayer avec protection de feuille mais pas assez de liberte pour celui qui effectue le devis

    Comment verroullez ces case et empechez d'y ecrire ( tout en restant variable en fonction des donnees dont elle depend

    merci a tous

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Je pense pas qu'il soit possible de protéger qu'une cellule......tu dois dé-verrouillé les cellules dans les quelles l'utilisateur à le doit de saisir des valeurs .. puis portégé la feuille... , cela interdit ensuite à l'utilisateur toute insertion de ligne ou colonnes , et la saisie dans les cellules vérrouillées....

    Mais tu devrai organiser autrement la création du devis pour que l'utilisateur n'est pas à toucher à ta feuille modéle de devis ...
    aprés choix du client ... tu crée un classeur relatif à ce devis... ( action sous bouton Enregistrer ...) et l'utilisateur utilise ce classeur pour son devis...

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 164
    Points : 43
    Points
    43
    Par défaut protection cellule
    Citation Envoyé par bbil
    Je pense pas qu'il soit possible de protéger qu'une cellule......tu dois dé-verrouillé les cellules dans les quelles l'utilisateur à le doit de saisir des valeurs .. puis portégé la feuille... , cela interdit ensuite à l'utilisateur toute insertion de ligne ou colonnes , et la saisie dans les cellules vérrouillées....

    Mais tu devrai organiser autrement la création du devis pour que l'utilisateur n'est pas à toucher à ta feuille modéle de devis ...
    aprés choix du client ... tu crée un classeur relatif à ce devis... ( action sous bouton Enregistrer ...) et l'utilisateur utilise ce classeur pour son devis...
    ok je comprend ton idées
    j'aimerais bien faire un userform avec une liste de choix des articles avec possibilité d'en rajouter ( pas trop dure) mais ensuite pour rajouter au fur et a mesure ce choix dans les lignes du devis , je ne sais pas faire car a chaque fois il faut prendre la ligne du dessous donc pas evident

    merci pour ton idee

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut Re: protection cellule
    Citation Envoyé par zouille
    j'aimerais bien faire un userform avec une liste de choix des articles avec possibilité d'en rajouter ( pas trop dure) mais ensuite pour rajouter au fur et a mesure ce choix dans les lignes du devis , je ne sais pas faire car a chaque fois il faut prendre la ligne du dessous donc pas evident
    ne peu tu pas utiliser le mêm principe que sur ajout client ?

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 164
    Points : 43
    Points
    43
    Par défaut Re: protection cellule
    Citation Envoyé par bbil
    Citation Envoyé par zouille
    j'aimerais bien faire un userform avec une liste de choix des articles avec possibilité d'en rajouter ( pas trop dure) mais ensuite pour rajouter au fur et a mesure ce choix dans les lignes du devis , je ne sais pas faire car a chaque fois il faut prendre la ligne du dessous donc pas evident
    ne peu tu pas utiliser le mêm principe que sur ajout client ?
    ok je tente et te tient au courant , le seul prob c'est que je ne peut pas faire recherche derniere ligne car entre le debut des articles et la fin du devis , j'ai des inscriptions sur les conditions de payement , il faut donc que soit je commence a une ligne et rajoute une au fure et a mesure soit definir la plage de travail

    merci

  6. #6
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 164
    Points : 43
    Points
    43
    Par défaut probleme combobox
    resalut a toi
    voila , j'ai realiser mon userform "devis" pour remplir le devis sans intervention direct sur la feuille mais ca bloque deja

    j'ai utiliser ton code de la combobox 3 du userform 1 pour en refaire un ( combobox1 du userform "devis"= mais rien ne se passe

    de plus je ne vois pas comment tu a realiser la liste car ton rowsource il n'y a rien , j'ai essayer en utilisant ton inicombobox mais idem

    je patoge completement

    merci a toi
    ci joint mon fichier a jour mon devis

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Hello,
    J'arrive après la bagarre mais j'aime bien mettre mon grain de sel...
    j'ai essayé avec protection de feuille mais pas assez de liberte pour celui qui effectue le devis
    Pour déverrouiller les cellules modifiées par l'utilisateur, tu vas dans Format -> Cellules -> Onglet protection -> Là, tu dévalides l'option "Verrouiller"
    Ensuite, tu protèges ta feuille. Seules les cellules non verrouillée pourront être modifiées, feuille protégée ou non.
    Pour ta dernière question, il faut que je relise tout le sujet...

    Essaie déjà ça

    A+

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut Re: probleme combobox
    Citation Envoyé par zouille
    resalut a toi
    voila , j'ai realiser mon userform "devis" pour remplir le devis sans intervention direct sur la feuille mais ca bloque deja

    j'ai utiliser ton code de la combobox 3 du userform 1 pour en refaire un ( combobox1 du userform "devis"= mais rien ne se passe

    de plus je ne vois pas comment tu a realiser la liste car ton rowsource il n'y a rien , j'ai essayer en utilisant ton inicombobox mais idem

    je patoge completement

    merci a toi
    ci joint mon fichier a jour mon devis
    et c'est qui "Ton" ... tous ce code c'est pas moi qui l'est écrit...

    sinon .. j'ai vu que tu avais bien une fonction initcombo... dans ton userform Devis mais elle n'est pas appellée...
    peu-être à l'ouvertrue de l'userform ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Initialize()
     inicombobox1
    End Sub

    j'ai vu que tu avez créer une procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub ComboBox1_Click()
    renomme la et utilise plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub ComboBox1_Change()
    pour la mise à jour des différents champs...


  9. #9
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 164
    Points : 43
    Points
    43
    Par défaut
    OK
    Encore merci
    je croyais que le code venais de toi , car a foorce de chercher a droite et a gauche , je me melange un peu .

    En fait pour ce 2eme userform j'ai utilisé le 1er , mais je ne comprend pas encore tout mais bon ca avance ( par exemple comment definir une liste sans remplire rowsource)

    Sinon je viens de realiser le remplissage du devis par le 2eme userform mais je ne comprend pas comment le faire descendre d'une ligne a chaque fois pour ne pas ecraser les info deja entrées..

    Au fait , est il possible de recopié des info d'une cellule dans un userform ( soit dans un text box non modifiable soit un label ) pour voir le montant TTC de devis au fur et a mesure ou j'avance ?

    merci bien

    fichier mis a jour sur le dernier liens

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    J'ai renommer ton bouton valider (cdb_Valider) et y ai associé ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Private Sub cdb_Valider_Click()
    Dim i As Integer
    i = 19 '1° Ligne
    Sheets("Devis").Activate
    While i < 38 And Cells(i, 2) <> ""
      i = i + 1
    Wend
    If i = 38 Then 'Cas ou derniére ligne atteinte on en rajoute une
       Rows(19).Copy 'Copy la ligne 19 pour récupérer format...
       Rows(38).Insert Shift:=xlDown
       Range("A38:G38").ClearContents 'Efface les données ..( laisse formule à droite..)
    End If
    Cells(i, 1) = TextBox2 ' Quantité ..
    Cells(i, 2) = ComboBox1.List(ComboBox1.ListIndex)
    Cells(i, 7) = TextBox1 ' Prix unitaire
    'Mise à jour du  label rajouté à l'user form ...
     LabTotal = "Total H.T. = " & Range("TOTAL")  'NOMMER LA cellule de la feuille devis contenat le Total , total
     
    End Sub

    Pour le report du résultat, nomme la cellule de la feuille devis contenant le résultat , menu Insertion/Nom/Définir


  11. #11
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 164
    Points : 43
    Points
    43
    Par défaut
    super cool , ca marche tres bien
    c'est mieux que ce que j'attendais

    petites questions :

    1-comment enlever la 1ere ligne de la liste de lacombobox correspondant au titre de ma liste comme ici ( NOM PRENOM ou DESIGNATION)

    2- qd je veux rajouter des clients , des le 2eme ajout , qd je clic sur nouveau , toutes les cases se vide mais au niveau du nom prenom , j'ai toujours celui du precedent client enregistrer

    3-comment utiliser ton code de rajout de ligne pour pouvoir effacer les champs de devis qd je clic sur enregistrer , car les devis aurons un nombre de ligne different donc pas evident: code a rajouter a ma macro enregistrer


    PS :fichier mise a jour sur adresse precedente
    Peut tu me donner ton avis sur le projet , si amelioration possible ?

    merci encore

  12. #12
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    1 - Modifie tes fonctions de remplissage combo (init combo) , lign For Each ..., remplace le b5 en b6 ...

    2- Rajoute Textbox15= "" dans le bouton sou valider,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        TextBox14 = ""
        TextBox15 = ""
    Else
        'recherche la derniere ligne vide en feuille client
    textbox15 , étant le textbox dans lequel tu saisi Nom et prénom ... textbox qque tu aurai pu renommer txtNomPrenom , par exemple , comme je te l'ai dis plus haut afin derendre le programme plus lisible..


    3- tu n'aurai pas besoin d'effacer de lignes... si avant la saisie de données tu copier le modéle de feuille la saisie s'effectuant ensuite sur cette feuille...! sans jamais toucher à la feuille modéle..

  13. #13
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 164
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par bbil
    3- tu n'aurai pas besoin d'effacer de lignes... si avant la saisie de données tu copier le modéle de feuille la saisie s'effectuant ensuite sur cette feuille...! sans jamais toucher à la feuille modéle..
    ok et merci encore pour tout
    ton idee est tres bone , mais la ca va pas etre gagné pour ecrire dans le fichier copié ( est il possible d'y ecrire sans qu'il soit ouvert, comment ,......je sens que je vais passe du temps devant le pc mais aussi sur le forum

    je comprend ien qu'il faut executer ma macro "enregistrer au moment ou je choisi le client ( pour ainsi creer une copie du devis , mais apres c'est le fait d'ecrire sur cette feuille qui me pose probleme , deja qd dans un classeur j'ai du mal , alors imagine avec 2

    merci

  14. #14
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    on peu simplifier cela en renomant la feuille devis modéle ... puis modifie le code du bouton vailder ..( userform choix client...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub CommandButton2_Click()
     
     Application.DisplayAlerts = False ' Pour éviter message d'avertissement sur destruction feuille..
     On Error Resume Next ' Desactive la gestion d'erreur au cas ou la feuille devis n'existe pas
      Sheets("devis").Delete ' Au cas ou détruit le devis précédent
     On Error GoTo 0
     Application.DisplayAlerts = True
     Sheets("Modele").Copy Before:=Sheets(2)
     ActiveSheet.Name = "devis"
     
    Sheets("Devis").Range("f4") = ComboBox2...
    ce code detruit la feuille devis ..., puis copie la feuille modéle et la renomme devis ... toutes tes actions suivante sur la feuille devis porte alors sur la nouvelle feuille...

  15. #15
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 164
    Points : 43
    Points
    43
    Par défaut
    oulala

    la cacommence a etre dur, si on detruit la page devis comment faire apres pour d'autre , car je vois bien que tu detruit devis pour la renomer en model et ensuite en devis ( j ai l impression de tourner en rond) car comment ensuite obtenir un devis seul avec le nom et prenom + date du client ( comme ma macro "enregistrer)?

    J'avais pensé enregistrer un classeur avant ( en utilisant cette macro associe au bouton valider (de "choix client) et ensuite renvoyer les infos du 2eme userform ( designation articles) dans ce nouveau au fur et a mesure , mais je pense que dans ce cas il va falloir reprendre tous les code ?

    La ca me depasse., je vais tenter ton idee pour voir , je te tient au courant des que je serait sortie de ce trou

    merci

    ps: il est vrai que ca evite de toucher a l onglet devis et donc de faire de mauvaise manipe

    ps2: est il aussi possible de travailler uniquement avec les userform sans ouvrir mon projet (en fin sans qu'il soit visible, comme ca y a juste a renseigner les champs et enregistrer) ?

  16. #16
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    [quote="zouille"]oulala :
    la cacommence a etre dur, si on detruit la page devis comment faire apres pour d'autre , car je vois bien que tu detruit devis pour la renomer en model et ensuite en devis ( j ai l impression de tourner en rond)

    c'est pas tous à fais ça ... renomme "manuellement" ta feuille devis en "modele"...

    ensuite la modification de macro .. à chaque nouveau devis demandé copie modéle en et la renomme Devis ... ( en détruisant précédament le devis précédent pour éviter des message d'erreur...)

  17. #17
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 164
    Points : 43
    Points
    43
    Par défaut
    ok , j'ai compris
    je viens d'essayer , en fait je vais faire comme ca mais rajouter mon bouton Enregistrer ( nom+date)dans mon 2eme userform ( celui du choix des articles) et par le meme temps supprimer l'onglet devis puis fermer le tout

    Qu'en pense tu ?: ce qui entraine une modif ( alegement )de ton code , en enlevant les alerte pour la supression de l'onglet devis que je devrai mettre a la suite de la macro enregistrer

    Est ce correcte ( c'est plus facile en francais qu'en VBA )

    Merci mille fois encore

  18. #18
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 164
    Points : 43
    Points
    43
    Par défaut petit prob
    resalut bbil

    voila , j'ai un petit prob.
    j'ai essayer de faire mon 2eme userform comme le premier avec possibilite d'ajouter un nouveau article ou selectionner un dans la liste mais ca plante , et je ne vois pas ou ennfin si , mais comprend pas pourquoi. peux tu regarder ?

    Autre chose , comment faire pour pouvoir ecrire qqchose a la suite d'un article dans la combobox ( ex : rajout d'une ref differente a chaque fois) sans modifier le contenu de la liste. donc : selectionner un article ecrire qq chose en plus , indiquer la qqt et validé ?

    Merci bien

    devis
    [/url]

  19. #19
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    dis nous plutot sur qu'elle ligne et qu'el message d'erreur ...

    pour rajouter du texte ? à la suite de l'article ? ou dans devis ... tu peu rajouter un text box pr exemple... que tu rempli sur sélection dans combo box, et modifiable par l'opérateur...

  20. #20
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 164
    Points : 43
    Points
    43
    Par défaut
    alors le message d'erreur se produit qd je veux ajouter un nouveau article : le msg est : Impossible de llire la propriete list.index de table de propriete non valide
    le debogage inscrit : ligne = ComboBox1.List(ComboBox1.ListIndex, 1)

    En fait au debut du projet je choisi mon client : ok
    si je choisi un article ou plusieur : ok
    par contre si je choisi : nouveau , j'ai ce message

    2-Pour l'ajout de text, je voulais parler de ce qui a dans la combobox indiquant mes articles
    J'aimerais que si j'en choisi un, je puisse ecrire qq chose a la suite comme une ref ou autre et que qd je valide ca me copie tout dans mon devis mais sans modifie la liste d'origine du combobox

    par ex : je selectionne : "Fourniture et pose fenêtre " et j'aimerais pouvoire ecrire a la suite en PVC blanc 04*10*04 ensuite valider pour l'incruster ds le devis mais sans modifier "Fourniture et pose fenêtre " dans ma liste de'article

    merci bien

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2003] copier des cellules avec contenant des formules
    Par laurentSc dans le forum Conception
    Réponses: 13
    Dernier message: 17/11/2015, 23h14
  2. [XL-2007] comment protéger les cellules contenant des formules d'un classeur
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/02/2015, 17h55
  3. Macro avec formule utilisant des cellules contenant des formules Vlookup
    Par Isabelle86 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 14/10/2010, 15h13
  4. Réponses: 5
    Dernier message: 08/03/2007, 10h13
  5. [Excel] Chercher un nom de cellule dans des formules
    Par conconbrr dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/07/2006, 17h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo