Recherche de macro

Bonjour à tous

Une panne m'a coupé tout à l'heure,rendant mon premier envoi totalement incompréhensible,veuillez bien m'en excuser.
Voici ma demande : je cherche une macro pouvant effectuer les tâches décrites dans l'envoi çi-joint,accessible
par le lien çi-dessous.

Merci à celui ou ceux qui s'intéresseront à ma demande.

Bremic83

http://www.cijoint.fr/cjlink.php?file=cj200910/cijosTY7Ra.xlsm
Configuration: Windows Vista Internet Explorer 7.0

7 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    bonjour

    dans une feuille débarrassée de toute autre macro,

    Ce ne sont pas les autres macros qui peuvent gêner car elles sont autonomes mais il faut qu'elles soient dans la feuille concernée car dans un module elles n'ont aucune chance de s'exécuter.

    Bon courage et à la prochaine.
    1. Contributeur
      bonjour

      As-tu essayé le classeur du poste 7 sans aucune modification effectuée.

      les macros doivent bien être copiée dans la fenêtre appelée par le bouton Visual Basic,ou par la commande Visualiser le code,dans l'onglet Développeur ?

      C'est bien cela mais comme ce sont des macros événementielles, elles doivent être mises dans la feuille concernée et pas dans un module.
      1. Re gb informe

        Merci .
        Ce soir,j'en ai assez,je mettrai celà en route demain.

        Bonne nuit

        Bremic83
      2. Re gbinforme,bonjour.

        Effectivement,dans une feuille débarrassée de toute autre macro,: CA MARCHE !

        Je te remercie pour ta patience et ta gentillesse.

        Très sincèrement et cordialement.

        Bremic83
    2. Contributeur
      bonjour

      j'ai nommé mes "paye",respectivement Paiements et Recettes...
      ,il n'y a pas de modification dans les colonnes .


      C'est assez normal car j'avais groupé les 2 plages pour simplifier et ta modification ne doit pas fonctionner.

      En effet il faut dans ce cas modifier les macros ainsi et cela fonctionnera :

      Private Sub Worksheet_BeforeDoubleClick(ByVal sel As Range, Cancel As Boolean)
      Cancel = True
      If Not Intersect(sel, Union([Paiements], [Recettes])) Is Nothing And sel.Count = 1 Then
          sel.Offset(0, -2).Value = sel.Offset(0, -1).Value
          sel.Offset(0, -1).Font.ColorIndex = 10
          sel.Offset(0, -1).Value = ""
          sel.Offset(0, -4).Font.ColorIndex = 23
      End If
      End Sub
      
      Private Sub Worksheet_SelectionChange(ByVal sel As Range)
      If Not Intersect(sel, Union([Paiements], [Recettes])) Is Nothing And sel.Count = 1 Then
          If sel.Offset(0, -2).Value <> "" Then
              sel.Offset(0, -1).Value = sel.Offset(0, -2).Value
              sel.Offset(0, -1).Font.ColorIndex = 10
              sel.Offset(0, -2).Value = ""
              sel.Offset(0, -4).Font.ColorIndex = 3
          End If
      End If
      End Sub
      
      1. Re gbinforme

        Aucun changement.

        Enlève moi un doute : les macros doivent bien être copiée dans la fenêtre appelée par le bouton Visual Basic,ou par la commande Visualiser le code,dans l'onglet Développeur ?

        Je ne touches plus à rien,j'attends ta réponse.

        Bremic83
    3. Contributeur
      bonjour

      je ne suis pas arrivé à trouver l'endroit où je dois insérer

      Tu as deux façons pour le faire :

      1 la plus simple :

      - tu appuies sur ctrl.
      - tu sélectionnes ta plage en colonne F avec la souris.
      - tu sélectionnes ta plage en colonne L avec la souris.
      - tu vas dans la "zone nom" à gauche de la barre de formule.
      - tu saisis ton nom "paye" et tu valides par entrée.

      2 la plus complète :

      - tu fais menu "formules".
      - puis "gestionnaire de noms".
      - clic sur "nouveau".
      - saisie du "nom" dans la fenêtre.
      - puis dans "fait référence" soit tu saisis la formule soit tu sélectionnes tes plages comme précédemment.
      - tu valides "ok".

      Ensuite, dans les 2 cas, lorsque tu vas cliquer sur la flèche à droite de la "zone nom" tu afficheras les noms définis et en les sélectionnant tu sélectionneras la plage correspondante.

      fenêtre d'erreur de compilation ou erreur 424

      C'est dû au fait que ta plage nommée n'existe pas.
      1. Bonjour gbinforme

        J'ai tout mis en place,j'ai nommé mes "paye",respectivement Paiements et Recettes et après enregistrement dans la gestion des noms,,ils sont dans la "zône nom",de la barre de formule.
        Lorsque je clique sur un des deux noms,la colonne intéressée réagit,sa couleur s'avive brièvement,mais,c'est tout ce qui se passe,il n'y a pas de modification dans les colonnes .
        J'ai certainement oublié quelque chose,ce que je cherche depuis ce matin,mais sans succès,hélas !

        J'avais modifié ta macro première,comme suit:

        Private Sub Worksheet_SelectionChange(ByVal sel As Range)
        If sel.Column = 6 And sel.Count = 1 Then
        sel.Offset(0, -1).Value = sel.Offset(0, -2).Value
        sel.Offset(0, -1).Font.ColorIndex = 10
        sel.Offset(0, -2).Value = ""
        sel.Offset(0, -4).Font.ColorIndex = 3
        End If
        If sel.Column = 12 And sel.Count = 1 Then
        sel.Offset(0, -1).Value = sel.Offset(0, -2).Value
        sel.Offset(0, -1).Font.ColorIndex = 10
        sel.Offset(0, -2).Value = ""
        sel.Offset(0, -4).Font.ColorIndex = 3
        End If

        End Sub

        et elle fonctionne très bien,mais,compte tenu des interactions qu'elle a dans mes en-têtes,et dans les tableaux inférieurs,j'aurais voulu limiter ses actions dans chaque colonne ,aux cellules F5 à F49,et L5 à L49,ce qui est l'objet de cette discussion.

        Je pensais,qu'en modifiant le code,c'était possible,mais je n'y suis pas arrivé,c'est pourquoi j'ai appelé au secours,et je suis navré de t'ennuyer avec celà.
        Veux-tu envisager cette possibilité s'il te plait ?

        A plus

        Bremic83
    4. Contributeur
      bonjour

      Il me semble que la modification par simple sélection peut poser problème alors j'ai mis un test pour éviter de la faire 2 fois et la possibilité de revenir en arrière par un double clic.

      http://www.cijoint.fr/cjlink.php?file=cj200911/cijefptC2m.xlsm

      à toi de nous dire si c'est mieux.
      1. Re gbinforme
        Je ne peux pas te dire si l'une est mieux que l'autre,car jusqu'à maintenant,je n'ai pas réussi à les faire fonctionner,ni l'une,ni l'autre .
        Sur la première je ne suis pas arrivé à trouver l'endroit où je dois insérer =Modele!$F$5:$F$49;etc..
        A chaque essai: fenêtre d'erreur de compilation ou erreur 424,ou autres !!!

        Je viens d'essayer de placer la deuxième,ton dernier envoi,là,c'est encore erreur 424
        la deuxième ligne de la deuxième macro,recopiée çi-dessous,apparait surlignée en jaune sur toute sa longueur,et le débogage n'indique pas l''endroit où ça coince ,il dit : objet requis .

        If Not Intersect(sel, [paye]) Is Nothing And sel.Count = 1 Thenet

        Plus je cherche,plus je nage,car les explications données sur "aide" s'adressent à des gens confirmés,et expérimentés,ce qui est loin d'être mon cas.

        La nuit porte conseil,dit-on,je vais aller vérifier cet adage.
        Bonne nuit

        Bremic83
    5. Contributeur
      bonjour

      Désolé, j'ai abandonné un peu le poste ces jours.

      Je t'ai adapté la macro selon tes souhaits sur ton classeur :

      http://www.cijoint.fr/cjlink.php?file=cj200911/cijgZVzjCE.xlsm

      Pour que cela fonctionne, je t'ai nommé une double plage "paye" ainsi :
      =Modèle!$F$5:$F$20;Modèle!$L$5:$L$20

      à toi d'adapter les plages et le nom éventuel qui se retrouve dans la macro.
      1. Re gbinforme

        OK,ben reçu

        Je vais essayer d'adapter

        Merci

        Bremic83
    6. Contributeur
      bonjour Bremic83

      Ceci devrait le faire dans la feuille concernée :
      Private Sub Worksheet_SelectionChange(ByVal sel As Range)
      If sel.Column = 6 And sel.Count = 1 Then
          sel.Offset(0, -1).Value = sel.Offset(0, -2).Value
          sel.Offset(0, -1).Font.ColorIndex = 10
          sel.Offset(0, -2).Value = ""
          sel.Offset(0, -4).Font.ColorIndex = 3
      End If
      End Sub
      
      1. Bonjour gbinforme

        Mise en place et essais très satisfaisants.

        Un seul mot: MERCI !

        A plus

        Bremic83
      2. Rebonjour,gbinforme

        Je suis très satisfait de ta macro,aussi,j'ai voulu l'adapter pour les mêmes fonctions,en partant de la colonne 12,tout en conservant le départ de la colonne 6,(cette dernière concerne les dépenses,la colonne 12 concerne les recettes )
        Pas moyen d'y arriver,à chaque tentative : Fenêtre d'erreur de compilation !
        Mes connaissances en langage VBA,étant des plus rudimentaires,je t'appelle à la rescousse pour m'indiquer
        les corrections à affectuer dans le code.

        Merci
        Cordialement.

        Bremic83
      3. Bonjour à tous,et à toi gbinforme

        Tu as eu la gentillesse de me concocter une macro dans cette discussion,qui fonctionne très bien,et je t'en remercie.
        J'ai réussi à l'adapter pour qu'elle agisse sur les colonnes 6 et 12.
        Mais,il se trouve,et je viens seulement de m'en apercevoir depuis hier après midi,qu'elle agit sur toute la longueur des colonnes ,ce qui est normal,mais,elle fausse les tableaux en dessous.
        J'ai essayé de changer la zône d'activité,en utilisant les références des cellules,et en déterminant une plage,
        sans réussir.
        Pourrais-tu,s'il te plait,m'indiquer la marche à suivre pour que la zône d'activité dans les colonnes 6,et 12
        soit limitée de la cellule ligne 5 à la cellule ligne 49.
        Je t'en remercie,et espère,...à plus.

        Bremic83