Recherche de macro

Bremic83 -  
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   -
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

7 réponses

gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730
 
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
0
Bremic83
 
Bonjour gbinforme

Mise en place et essais très satisfaisants.

Un seul mot: MERCI !

A plus

Bremic83
0
Bremic83
 
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
0
Bremic83
 
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
0
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730
 
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.
0
Bremic83
 
Re gbinforme

OK,ben reçu

Je vais essayer d'adapter

Merci

Bremic83
0
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730
 
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.
0
Bremic83
 
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
0
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730
 
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.
0
Bremic83
 
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730
 
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
0
Bremic83
 
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
0
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730
 
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.
0
Bremic83
 
Re gb informe

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

Bonne nuit

Bremic83
0
Bremic83
 
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
0
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730
 
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.
0