Formule dans excel

Résolu
Bonjour, je me monte un suivi de frais annuel et je bloque avec le code VBA qui ne me prend plus de ligne. Je ne sais pas si j'ai bien fait de passer par cette formule.
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.

114 réponses

Résumé de la discussion

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.

Bobot (l’IA à votre service)
  1. Bonsoir Christophe

    Si ce à quoi tu es arrivé te convient c'est parfait
    Bonne suite

    On passe le sujet en résolu

    Cdlmnt
    Via
    1
    1. Bonjour, REMERCIEMENTS à VIA55 qui m'a permis de monter mes feuilles .
      Je suis arrivé à ce dont je désiré et même je te cite : "Tu veux vraiment le beurre et l'argent du beurre et .. !! " à voir dans une de mes captures avec une pensée couleur pour le peuple Ukrainien.
      Pour la formule couleur de l'impasse en colonnes je n'ai pas réussi à rentrer la formule autrement (voir fichier 2).
      Je suis sur une feuille complémentaire qui reprend le data en dépenses recette : Super !
      J'ai bien compris les leçons, beaucoup de travail mais aujourd'hui un énorme plaisir.
      Tout est stable et après plusieurs sauvegardes je passerai (malgré tes conseils) à la macro qui empêche le copier/coller .
      Une fois de plus Merci pour tes partages et ta patience.
      Christophe

      hhttps://www.cjoint.com/c/LCoiFX2zAWy
      https://www.cjoint.com/c/LCoiJ2vPZMy
      0
      1. Tu veux vraiment le beurre et l'argent du beurre et .. !!
        Tu aimerais pouvoir colorer une ou plusieurs cellules selon la ligne ?
        Comment indiquer à Excel que c'est ou 2 ou 3 ? impossible !
        Donc soit tu fais colorer la ligne (comme jusqu'à présent), soit tu devra colorer cellule par cellule en double cliquant dans chacune d'elle, et là je pense que c'est fastidieux et contreproductif et je ne modifierai pas la macro en ce sens

        Sur ton fichier je te prépare les couleurs sur la 1ere ligne figée comme je disais dans mon précédent post, que tu vois ce qui est le plus pratique pour toi

        Voilà plus vite fait que je ne pensais :
        https://www.cjoint.com/c/LCmtwT1GppW

        0
        1. Re, je pense t'avoir mal compris. Je joint ton fichier sur lequel je "travaille" avant de gros ennuis sur le mien.
          J'avais une logique verticale, celle d'excel est autre.
          Sur le fichier l'impasse sur ligne 13 et 14 n'est pas faite.
          Avoir un choix libre comme en A16 A18 A21 serait le summum
          En revanche sur mon fichier j'indique la colonne Z à la place du O mais j'ai des retours négatifs
          L'Irlande viens de gagner, à moi de jouer pour la dernière ligne.
          https://www.cjoint.com/c/LCmsHZM8lFy

          Bonne soirée et repos, merci de ta patience mais à ce jour j'ai bien progressé
          Christophe
          0
          1. Pourquoi pas à la rigueur, si tu figes les volets pour laisser la 1ere ligne toujours apparente, mais je ne vois pas par quel procédé simple choisir une des couleurs !
            Le seul truc auquel je pense immédiatement c'est d'avoir les 7 cellules de couleurs + à côté une cellule témoin qui affichera la couleur choisie (un peu comme dans Paint)
            Un double clic sur une des 7 couleurs la choisirait et colorerait la cellule témoin avec
            Ensuite tout double clic sur une des cellules des plages délimités en colonne A ferait colorer la ligne selon la couleur témoin
            Si ça te va je peux modifier mon modèle en ce sens (même si je pense que le mien est plus ergonomique et plus pro !)
            Dis moi
            0
            1. Je pensais cela plus pratique d'avoir le choix couleur à disposition en haut (visible de tous)
              https://www.cjoint.com/c/LCmrcF2Bvmy

              Merci

              Christophe
              0
              1. Re, je pense voir ou se trouve l'erreur chez moi.
                Comme je choisi la ligne (1) et non pas la colonne (o)
                a la place de : coul = Range("O" & v).Interior.Color
                il me faut rentre "ligne" 1 (je sais pas par quelle dénomination )
                0
                1. En ce cas là mon fichier avec userform de choix ne te sert à rien !
                  Je ne vois pas comment tu pourrais à la fois double-cliquer sur la ligne à colorer puis aller choisir une couleur en ligne 1 !!
                  En plus pas pratique quand tu trouveras en décembre !
                  Je ne comprends pas ta façon de faire et de compliquer les choses !

                  0
                  1. Oui j'ai testé mais je vais mettre le choix des couleurs en haut sur la première ligne
                    0
                    1. Le choix de couleur n'est pas dans une cellule de la feuille !, il est à faire dans l'Userform qui s'ouvre au double-clic.
                      Cela fonctionne correctement dans le fichier que je t'avais envoyé , l'UF s'ouvre au double clic ?
                      AS tu bien testé mon fichier dans tous les sens avant ??
                      Ce qu'il y a dans la feuille dans la plage O1 à O7 ce sont les couleurs que la macro vient chercher pour mettre les mettres dans l'UF de choix puis quand ce choix est validé pour colorer la ligne du fichier de cette couleur

                      0
                      1. Je vais voir, pour mettre le choix de couleur en cellule 1 je formule (STP) comment ?
                        0
                        1. Je ne sais pas, normalement en début de ma macro exemple il y a bien déprotection de la feuille, justement pour pouvoir colorer à l'intérieur,
                          je viens de reproduire If Not Intersect(Target, Range("A2:A10", "A15:A30")) Is Nothing Then dans ma feuille et chez moi cela fonctionne bien
                          Il faut bien doublecliquer dans une cellule des plages indiquées soit colonne A uniquement et ligne entre 2 et10 ou ligne entre15 et 30

                          0
                          1. Information et Remarque :
                            Info :
                            J'ai fini par trouver l'erreur qui me bloqué le déclenchement de la macro sécurité en fermeture, cela venait des intervalles. SUPER !
                            Remarque :
                            Je suis sur la formule couleur et j'ai fait un test sur ta feuille par formule :
                            If Not Intersect(Target, Range("A2:A10", "A15:A30")) Is Nothing Then
                            L'intervalle se sélectionne tout de même mais comme c'est une cellule protégé rien ne se passe.
                            Je suis passé à cote de quoi ?
                            Christophe, (bientôt la quille)
                            0
                            1. Merci, étant donné que j'ai rajouté des lignes j'avais ce problème. Maintenant je sais comment corriger.
                              Après je passe à la formule couleur. Cela me prend du temps mais comme il fait un temps à ne pas aller à la pêche, je m'occupe (grosse pluie dans le 81)
                              Merci, Christophe
                              0
                              1. Bonjour

                                La boucle For va de 38 jusqu'à 431 par saut de 36 donc
                                1er passage 38 , 2nd passage 74, 3eme passage 110 etc ... qui doivent correspondre au n° des lignes où il a des KIKO, ces lignes étant régulièrement espacées de 36 (si ce n'est pas le cas c'est peut être là que vient l'erreur)
                                Ensuite l'instruction .Range("A" & n)="KIKO" inscrit KIKO dans la cellule de la colonne A, en A38 au 1er passage, en A74 au 2nd etc
                                mais bon tu peux supprimer toutes les lignes de la macro concernant la boucle (depuis For jusqu'à Next) et les remplacer par 12 instructions Range avec les adresses des 12 KIKO mensuels
                                .Range("A3")="KIKO"
                                .Range("A38") = "KiKO"
                                etc

                                Je te rappelle que cette macro qui se déclenche à la fermeture du classeur a pour but de bloquer tout avant fermeture
                                1
                                1. Bonjour, je n'arrive pas à trouver à quoi cela correspond.

                                  Private Sub Workbook_BeforeClose(Cancel As Boolean)
                                  With Sheets("Frais annuel 22")
                                  .Unprotect
                                  .Range("A3") = "KIKO"
                                  For n = 38 To 431 Step 36
                                  .Range("A" & n) = "KIKO"
                                  Next
                                  .Protect
                                  End With
                                  End Sub

                                  J'ai cette erreur : .Range("A" & n) = "KIKO"
                                  Mais je pense que cela viens de : For n = 38 To 431 Step 36 mais je ne sais pas à quoi ce dernier fait référence (n= 38 ??) (Range("A" & n ???)
                                  J'ai besoin d'un petit cour
                                  Merci Christophe
                                  0
                                  1. J'ai besoin de savoir pourquoi lorsque pour rajouter une ligne :
                                    Sélection à gauche, copier, coller j'ai le message ci joint qui s affiche et comment y remédier.
                                    Cela viens de ou ?
                                    https://www.cjoint.com/c/LClsnjaGy6y

                                    Merci
                                    0
                                    1. Ok, je t'écoute. Avant de commencer les couleur je rajoute des lignes afin que tous les mois soit identiques.
                                      Je te tiendrai informé de mon avancement.
                                      Bon rétablissement,
                                      Christophe,
                                      0
                                      1. Re,

                                        Tu peux parfaitement appliquer Not Intersect sur des plages discontinues, de cette manière ci :
                                        If Not Intersect(Target, Range("A2:A27","A31:A56","A60:A85", etc))"


                                        Pour ce qui est du copier coller ou du glissé, d'une part pour les désignations cela n'a en principe pas lieu d'être si je me souviens bien de la dernière version vue puisque les désignations sont inscrite par formules RECHERCHEV des choix à côté dans liste déroulante, d'autre part tu n'as pas a t'adapter à leur façon de faire c'est à eux de s'adapter au fonctionnement de ton fichier dont tu leur donnera le mode d'emploi en leur précisant bien qu'étant donné les macros, formules et protections tout copier collé ou glissé est prohibé au risque de dysfonctionnement !

                                        Je te le redis le mieux est l'ennemi du bien ! ton fichier est déjà assez complexe comme ça lorsque tu auras rajouté les couleurs..... Plus on complexifie plus on risque des bugs ....

                                        Bon courage
                                        Via

                                        0
                                        1. Re, je viens de rentrer pressé de voir ce dont tu m'as préparé : cela correspond à mes attentes, Super !
                                          Je ne sais pas encore comment formuler : "If Not Intersect(Target, Range("A2:A27"))" en colonne sachant que au départ je n'ai pas besoin, en suivant sur 30 lignes oui puis à nouveau non et ainsi de suite jusqu’à le fin des 12 mois.
                                          Après je vais avoir <souligne>presque fini </souligne>car c'est un fichier que je vais proposer à mes enfants qui ont l'habitude du coller copier et le glissé (pour les colonnes libres tel que montant et surtout désignations).
                                          J'avais repéré sur le net deux sites qui avaient retenus mon attention mais je n'ai pas approfondi pour l'instant (j'écouterai tes conseils)
                                          :
                                          _ https://forums.commentcamarche.net/forum/affich-29684518-empecher-le-copier-coller-dans-des-cellules-en-liste-de-valeurs#answers

                                          _ https://forum.excel-pratique.com/excel/empecher-copier-couper-coller-pour-certaine-colonne-t88484.html
                                          D'abord les couleurs
                                          En te remerciant encore une fois
                                          Christophe
                                          0
                                          • 1
                                          • 2
                                          • 3
                                          • 4
                                          • 5
                                          • 6