Formule dans excel
Résoluvia55 Messages postés 14730 Date d'inscription Statut Membre Dernière intervention -
J'ai crée dans mon tableau une colonne qui me valide mon affichage de frais par un V, sur celle d’a coté par un D je renvoi la somme sur le mois d’après (payement différé) mais il faut que le V s'annule pour ne pas avoir le montant dans le mois courant.
Je suis bon jusqu’à la ligne 350 mais après impossible de continuer. Je suis pret à joindre mon fichier, Merci pour votre future aide.
- Formule dans excel
- Formule moyenne excel plusieurs colonnes - Guide
- Formule excel si ou - Guide
- Liste déroulante excel - Guide
- Formule somme excel ligne - Guide
- Mise en forme conditionnelle excel formule - Guide
114 réponses
Le problème concerne un suivi de frais annuel où une colonne V valide l’affichage des frais et une colonne adjacente renvoie le montant au mois suivant avec un D, et le V doit s’annuler pour le mois courant, mais la macro bloque après la ligne 350. La boucle For semble viser des lignes KIKO régulièrement espacées (38, 74, 110, etc.) en pas de 36, et si cet espacement n’est pas exact, l’exécution peut échouer; une solution proposée est de remplacer la boucle par 12 instructions Range fixes correspondant aux 12 mois. D’autres pistes consistent à ajouter une validation de données pour restreindre les choix à V, D ou vide et à envisager une macro associée au verrouillage des plages pour protéger la feuille, avec indication des plages verrouillées. Enfin, il est suggéré d’utiliser un tableau de codage pour les désignations et une RECHERCHEV afin de simplifier les formules et rendre les plages nommées dynamiques.
Ce n'est pas entre liste normale ou liste déroulante le choix,
dans tous les cas je parlais d'une liste pouvant alimenter une liste déroulante dans ton tableau,
mais cette liste peut être statique (sur une plage définie ou nommée de la feuille ou d'une autre feuille comme tu as la plage DV en P8:P9,
ou bien une liste que tu peux rallonger à loisir et qu'on rend dynamique dans le Gestionnaire de noms, c'est à dire que le nom attribué prendra en compte une plage variable selon le nombre de lignes qu'elle contient, donc tu peux rajouter des données dans ta liste de base, la liste déroulante qui fera appel à la plage nommée suivra la mouvement et proposera toutes les données)
Mais je m’aperçois qu'on a souci pour avoir une liste déroulante dans les colonnes de Codes parce que sont justement celles que tu bloques avec la Validation de données personnalisée et la formule =$A$3<>"KIKO" et qu'on ne peut mettre 2 validations des données pour la même plage
Donc on oublie la liste déroulante dans les colonnes codes, tu rentreras le code à chaque fois, ce qu'il faut c'est faire le tableau de correspondance code -désignations (et là pas besoin de liste dynamique) et par recherchev faire afficher la bonne désignation
Je t'ai fais un exemple de début de tableau pour les débits et de la formule adéquate
J'ai mis aussi la macro qui va à la fermeture du classeur, mettre toutes les cellules mensuelles sur KIKO puis protéger la feuille. Après tu fais tous les déverrouillages manuellement
https://www.cjoint.com/c/LBqrTPUqmOW
Pour cela j'ai la possibilité de débloquer la colonne.
J’ aurez bien aimer conserver cette liste déroulante dans J et F car elles sont séparées du V en colonne E et K
Il faut choisir ou le blocage des cellules par Validation de données ou la liste déroulante, qui prime ?
Si tu veux conserver la liste déroulante il faut envisager le blocage autrement : ce serait alors par macro qui au choix de KIKO verrouillerait les cellules des colonnes F et J du mois et protégerai la feuille. Pour rétablir l'accès aux cellules il faudrait alors déprotéger la feuille et passer de KIKO en VALIDE où la même macro cette fois déverrouillerait les cellules
Qu'n dis tu ?
(je viens de me faire un petit apéro : + de 50 lignes dans ma base- pourquoi pas des sous catégorie, mais liste déroulante sur tel portable .
Tu me marques : Il faut choisir ou le blocage des cellules par Validation de données ou la liste déroulante, qui prime ?
J'ai pas tout suivi,...
Je vais enregistrer correctement mon passe temps (faut pas oublier que je suis en retraite, "avec une grosse passion pour la simulation de vol"), me servir un second apero (on sait jamais si demain...)
Je commence à perdre pied,
Christophe
ps : MERCI
Le blocage des cellules avec KIKO actuellement se fait par Validation de données (Personnalisée avec formule =$A$3<>"KIKO")
Donc pas possible de faire une autre Validation de données sur les mêmes cellules mais justement si tu veux une liste déroulante dans ces cellules (pour choisir un code) cela ne peut se faire que par Validation de données (Liste et Source la plage des valeurs)
C'est pour ça que je propose une autre solution :
- Utiliser la validation de données pour avoir une liste déroulante de choix dans ces cellules du code
- Verrouiller les cellules (et protéger la feuille) automatiquement par macro lorsqu'on choisit KIKO en tête du tableau
Je te prépare un exemple, tu y verra plus clair
Moi aussi je suis à la retraite ☺
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionLe top serais d'avoir des sous dossier dans le choix des articles en Code.
Merci, bonne soirée. Je sature = j’arrête.
Christophe
https://www.cjoint.com/c/LBquDgkzf2W
Pour les sous-dossiers ce n'est pas possible dans la même cellule, il faudrait une cellule Code pour choisir un code et dans la colonne à côté une autre liste déroulante présenterait uniquement les sous-codes associés au code choisi et c'est ce choix dans cette seconde liste qui permettrait de choisir la désignation, mais ça te fait modifier tout ton tableau d'une part et c'est une autre gestion pour les 2 listes déroulantes en cascade, donc vois si ça vaut le coup ...
Bonne soirée aussi
Via
Je penses que c'est faisable d'élargir mon tableau, surtout que ce ne sera pas trop important et comme j'ai au moins 50 choix cela me permettrait de les regrouper par genre.
La nuit porte conseil, je vais faire dormir mes yeux.
Demain j'ai un RDV, matinée sans pc
Merci, Christophe
J'ai donc préparé un exemple avec code et sous-codes que tu pourras étudier demain après midi après avoir regardé le premier que je t'ai adressé dans mon post 44 et qui a les explications pour les protections etc
https://www.cjoint.com/c/LBqwjokyZHW
A demain
- Protection par macro:
/J'ai voulu protéger en colonne E G L M en rajoutant des plages (voir capture) mais cela n'a pas l'air de fonctionner.
- Code :
/Pour la base de donné, j'ai pas encore regarder mais je vais avoir besoin de plus de plages en CODES (S2).
/Je travaille pour le moment sur la même feuille mais dans le futur il serait bien de pouvoir la déplacer dans une autre feuille. Si je sélectionne l'ensemble/coupe et colle sur une autre feuille les formules des cases vont s'adapter ?
/Dans la colonne S/C j'aimerai rajouter un choix vide comme dans Code en L.
/Dans la sélection en S/C est il possible d'avoir une sélection vide avec possibilité de rentrer un commentaire ?
Merci
Christophe
1) Protection : tu rajoutes des plages mais ton image ne montre pas si tu les as rajouté aussi dans les instructions pour les verrouiller ou déverrouiller :
If Target.Value = "KIKO" Then Range(plage1).Locked = True: Range(plage2).Locked = True:Range(plage3).Locked = True:Range(plage4).Locked = True
Ensuite puisque les plages sont contiguës pas besoin des plages 3 et 4 il suffit de mettre
plage2 = "K6:M34"
2) Pour les codes et sous codes oui ce serait mieux de les mettre dans une feuille à part appelée par exemple DATA,
Attention : toutes les plages de DATA utiles dans les formules ou validation de données des cellules des feuilles où elles seront utilisées doivent :
- ou être nommées (comme codesdebits par ex) dès le départ dans DATA et les formules utilisent ces noms,
- ou être indiquées avec le nom de la feuille (par ex dans la validation de données des cellules S/C ce serait =DECALER(DATA!$U$3.... etc) . Tu pourras ainsi te référer à ces listes dans ta feuille Frais annuel 22 comme dans toute autre feuille que tu pourrais ajouter dans le classeur (Frais annuel 23 par ex)
3) Pourquoi rajouter un choix vide ? il suffit dans la cellule de la liste déroulante de taper sur la touche Suppr pour effacer une donnée existante (plus simple que d'aller chercher dans la liste déroulante)
Si néanmoins tu veux une option "vide" dans la liste déroulante, à la fin de chaque liste de sous-code tu ajoutes une cellule avec un espace qui fera donc apparaitre un vide mais qui sera comptabilisé par NBVAL dans formules de la ligne 1 pour pouvoir apparaitre dans les listes déroulantes
4) Où veux tu rentrer ce commentaire ? Dans S/C impossible c'est une liste déroulante, dans Désignation impossible il y a déjà une formule qu'on ne peux effacer. Il faudrait donc rajouter une colonne Commentaire. Quel est l'intérêt de ce commentaire ?
Par contre ce qui est possible, selon ta version d'Excel c'est d'attacher un nouveau commentaire ou une nouvelle note à une cellule (par clic droit sur la cellule), note ou commentaire qui devient visible lorsqu'on passe avec la souris sur la cellule
Dès que tu auras avancé, notamment dans la création de la feuille DATA tu pourras me faire parvenir à nouveau ton fichier et on fera le point
En attendant n'hésite pas si tu as d'autres interrogations ☺
Alors voilà un exemple de feuille DATA avec une marge de 20 codes possible et 20 sous-codes par code
toutes les plages utiles sont nommées rien d'autre à faire que de rajouter des codes et des intitulées pour les sous codes
Je n'ai mis les formules et validations de données que pour le mois de janvier pour l'instant
J'ai mis dans cette feuille une explication de la fonction DECALER utilisée pour la Validation de données, en espérant être assez clair ☺
https://www.cjoint.com/c/LBruz6jOLIW
Dans DATA les nombres en noir sont simplement le décompte des 20 possibilités (permettent par formule en lignes 3 et 27 de rapatrier les codes de la colonne B
les nombres en rouge calculent par formule le nombre de sous-codes rentrés dans cette colonne pour pouvoir indiquer à la fonction DECALER susnommée la hauteur de plage à prendre en compte pour la liste déroulante
Étudie bien tout ça et redemande moi si éncessaire
Juste en G et H 5 je n'ai pas de barre
Autrement c'est SUPER
Manque plus à me lancer sur le code de protection VBA et la continuité des mois suivant, vraiment pas sur de ma personne.
J'ai rajouté deux colonnes commentaire car en travaillant sur le téléphone c'est moins compliqué de d’insérer un commentaire.
J'ai passé plus de 20 ans sur simulateur (concorde) avec lequel je me suis beaucoup battu mais je l'ai dompté. Il me reste moins d'années pour Excel !
Bien encore Merci,
Christophe
https://www.cjoint.com/c/LBsh70fgAqy
En C5, G5et H5 il y a rien comme je pensais que c'était la ligne du report du mois précédent (et esthétiquement c'est mieux !)
Si néanmoins tu veux y inscrire un crédit il suffit d'étirer les cellules C6 puis G6:H6 vers le haut pour appliquer formules et validations de données à la ligne 5
Le code protection VBA est existant, il suffit d'ajuster les plages puisque les colonnes sont différentes maintenant, en fonction des colonnes que tu veux verrouiller avec KIKO, à mon sens il y a désormais 4 plages à verrouiller et déverrouiller :
pour crédit col B à C et col E à H (D contenant une formule restant toujours verrouillée) et pour débit col L à O puis col Q à R (P restant verrouillée), les plages centrales avec formules (I à K) restant elle aussi toujours verrouillées
Tu verras sur le fichier joint la protection par KIKO fonctionne parfaitement de la colonne B à H, puis de L à R cela aussi mais en passant par VALIDE de B à H parfait mais de L à R rien ne se passe.
J'ai essayé en déverrouillant ou pas mais c'est pareil.
Pourquoi ne pas avoir appliqué la formule de la même rangé, cad :
Case 3
plage1 = "B5:C34"
plage2 = "E5:H34"
plage3 = "L5:N34" je désire garder O5 modifiable pour janvier
plage4 = "Q5:R34"
Case 38
plage1 = "B40:C70"
plage2 = "E40:H70"
plage3 = "L40:O70"
plage4 = "Q40:R70"
Pourquoi en Crédit cela fonctionne et en Débit on a un bug
En attente, Merci
Christophe
https://www.cjoint.com/c/LBsr16EVKVy
C'est ce que je t'expliquais dans mon post 50 si tu ne rajoutes pas aussi les plages 3 et 4 dans les lignes d'instructions de verrouillage et de déverrouillage rien ne se passera pour elles
En fin de macro tu as
'si valeur entrée est KIKO on verrouille les plages
If Target.Value = "KIKO" Then Range(plage1).Locked = True: Range(plage2).Locked = True
'si valeur entrée est VALIDE on deverrouille les plages
If Target.Value = "VALIDE" Then Range(plage1).Locked = False: Range(plage2).Locked = False
Il te faut :
'si valeur entrée est KIKO on verrouille les plages
If Target.Value = "KIKO" Then Range(plage1).Locked = True: Range(plage2).Locked = True : Range(plage3).Locked = True: Range(plage4).Locked = True
'si valeur entrée est VALIDE on deverrouille les plages
If Target.Value = "VALIDE" Then Range(plage1).Locked = False: Range(plage2).Locked = False : Range(plage3).Locked = False: Range(plage4).Locked = False
<heureusement que tu es disponible.
Remarque perso : retraité de quel secteur d'activité (réponse ou joker).
Je vais faire un copier coller, chose qui me pose beaucoup de problèmes car tellement habitué au raccourci j'écrase ce qui ne faudrait pas.
Je donnerai des nouvelles, Merci
Christophe
C’est génial
Pour le principe des lignes cela reste possible avant de me lancer.
+++ Christophe, Personne Heureuse !
Bonjour, j'avais ressenti la présence d'une personne habituée à partager ses connaissances avec le désir d'expliquer, même avec des exemples : c'est Très Bien.
Pour l'anglais, même si ce n'est pas ma tasse de thé je m'en accommode depuis de nombreuses années (approfondir ce qui suit)
https://www.youtube.com/watch?v=kcVLnVcykF0&feature=youtu.be
Ce qui me fait vraiment défaut c'est comprendre la logique de programmation avec tout ce qui est autour.
Au sujet de ta dernière question il faut savoir que vu le moment de Bonheur suite à ton texte joint pour la formule j'ai mon esprit qui est parti dans tous les sens avec mes idées d'un coté et mes pensées d'un autre : on va mettre cela sur le dos de l'age.
Revenons à excel, pour changer, je saisi mes infos et je trouve que je passe beaucoup de temps à remplir les colonnes date.
Avec à titre d'exemple pour Janvier en A4 et la date que je mentionne (2022) en Q2;
Mais si je saisi avec un temps de retard il serais bien que je puisse passer outre. A voir!
Merci,
Christophe
Ma dernière réponse a disparu ! mais bon tu sembles l'avoir lue ☺
En ce qui concerne la logique de programmation en VBA c'est assez simple, il a de bons tutos su Internet pour ça ou des bouquins pour débuter comme VBA pour Excel pour les nuls
et je peux te donner des explications sur certains points si tu le demandes
Pour entrer la date du jour rapidement il y a le raccourci clavier Ctrl + ;
Cdlmnt
Via
Dommage car après je ne touche plus, je suis en train de rentrer les formules des mois, cela ce passe bien mais comme je contrôle au passage cela me prend du temps.
J'aurai eu besoin juste d'un exemple de formule pour la saisi des dates. En rentrant celle du jour je pense que excel peut prendre en compte le moi en lettre et sur une autre case le jour en chiffre.
Après PROMIS je vais faire voler le Pointu.
Cordialement et encore Merci
Christophe
Quand tu entres 19/02/2022 dans une cellule Excel comprend que c'est une date et le retranscrit sous le nombre 44611
après tout n'est affaire que de format d'affichage de la cellule :
- si tu es en format Date courte tu auras comme affichage 19/02/2022
- par format personnalisé tu peux choisir différents affichage comme jjj jj mmm aa qui donnera sam 19 fév 22 ou mmmm qui ne donnera que février etc
Tu peux aussi entrer une date par formule :
=AUJOURDHUI() pour la date du jour (qu'on peut aussi entrer sans formule par le raccourci clavier Ctrl + ; comme je disais dans mon post précédent)
ou =DATE(2022;2;19) formule dans laquelle les nombres peuvent être remplacés par des adresses de cellule où sont ces valeurs =DATE(A1;B1;N1)
ou DATEVAL("19/02/2022") pour transformer le texte entre guillemets en date, formule dans laquelle les parties de texte peuvent aussi provenir de cellules =DATEVAL(N1 &"/" & B1 & "/" & A1)