[Catégorie modifiée VB6 -> VBA] Aide Macro Excel 2007

petarr Messages postés 17 Date d'inscription vendredi 15 avril 2011 Statut Membre Dernière intervention 22 avril 2011 - 18 avril 2011 à 10:45
petarr Messages postés 17 Date d'inscription vendredi 15 avril 2011 Statut Membre Dernière intervention 22 avril 2011 - 22 avril 2011 à 10:16
Bonjour,

Je voudrais créer une macro qui change la couleur et le contenu des cellules sélectionnées. Je voudrais que le macro s'active après avoir appuyé sur un bouton.

- j'appuie sur le bouton
- je sélectionne une cellule qui devient rouge et le texte A1-1 apparaît dans la cellule
- si j'appuie à nouveau sur la même cellule, elle devient blanche (en cas que je me trompe avec la sélection)
- je sélectionne une deuxième cellule qui devient également rouge et cette fois le texte est A1-2
- je répète cela jusqu'à A1-4
- j'appuie sur le bouton et la macro n'est plus active

Le but:
J'ai un champ de 15 à 21 modules photovoltaïques... Ils vont être connectés en 4 à 7 chaînes de 3 à 4 modules. la dénomination sera A1-1 jusqu'à A1-4, A2-1 jusqu'à A2-4 etc. Le premier chiffre indique la chaîne, le deuxième, le numéro du module dans la chaîne. Je voudrais que la dénomination se fasse automatiquement en indiquant la chaîne avec le bouton (7 boutons). Donc j'appuie sur le bouton et je commence à indiquer l'emplacement des modules sur le surface.

Merci d'avance à tous qui peuvent m'aider

23 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 avril 2011 à 13:16
Salut

Même réponse qu'à ta précédente question sur le sujet.
As-tu essayé de mettre en pratique ce que je t'ai proposé ?
Sur quoi bloques-tu ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
petarr Messages postés 17 Date d'inscription vendredi 15 avril 2011 Statut Membre Dernière intervention 22 avril 2011
18 avril 2011 à 14:10
Avec ta méthode il faut sélectionner les 21 cellules et après appuyer 21 fois aux touches... Il me faut un moyen plus automatisé
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 avril 2011 à 15:04
??
Non. Une fois les cellules sélectionnées, un clic sur un bouton peut suffire à traiter toutes les cellules.
Exemple :
MsgBox Selection.Cells.Count
te renverra le nombre de cellules sélectionnées

Après, ce n'est qu'une histoire de traitement de chacune des cellules. Ce genre de boucle qu'on trouve partout à condition de faire un peu de recherche
    Dim oRange As Range
    For Each oRange In Selection.Cells
        Debug.Print oRange.Address
    Next

PS : Pense à correctement choisir la catégorie de tes questions
0
petarr Messages postés 17 Date d'inscription vendredi 15 avril 2011 Statut Membre Dernière intervention 22 avril 2011
18 avril 2011 à 16:58
je sis débutant et j'ai besoin des réponses plus détaillées... je n'ai rien compris
0

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

Posez votre question
petarr Messages postés 17 Date d'inscription vendredi 15 avril 2011 Statut Membre Dernière intervention 22 avril 2011
18 avril 2011 à 19:00
tu sais comment je peux changer la couleur de la cellule avec un click du souris?
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 avril 2011 à 19:06
Je te l'ai dit dans ma première réponse : Enregistre une macro pendant que tu le fais à la main et tu obtiendras le code tout fait.
Il te restera à le comprendre et à l'intégrer.
Ici, on peut fournir de l'aide, pas des programmes tout fait. C'est à toi d'apprendre.
0
petarr Messages postés 17 Date d'inscription vendredi 15 avril 2011 Statut Membre Dernière intervention 22 avril 2011
19 avril 2011 à 08:54
J'en suis conscient... mais ça ne marche pas... j'enregistre un macro, je clicke sur plusieurs cellules et cela ne donne rien... j'ai que
Range("N17").Select
donc la cellule sélectionnée lors de l'enregistrement de la macro
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
19 avril 2011 à 11:54
Si tu enregistres une macro pendant que tu fais du coloriage de cellule, le code devrait apparaitre.
Office 2007 (comme Vista) sont bourrés de problèmes et notamment au niveau de l'enregistreur de macro : Es-tu à jour des mises à jours ?
Chez moi, quand je sélectionnes des cellules et que j'applique une couleur de fond, j'ai bien le code nécessaire.
0
petarr Messages postés 17 Date d'inscription vendredi 15 avril 2011 Statut Membre Dernière intervention 22 avril 2011
19 avril 2011 à 13:55
la couleur c'est bon... je veux que ma macro s'active en sélectionnant des cellules... par contre je n'arrive pas à exécuter la macro en sélectionnant 2 fois la même cellule... regarde:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B6:O11")) Is Nothing And Range("A1") = 1 Then

Ici quand je sélectionne une autre cellule ca marche... par contre si je click sur la même cellule, il se passe rien... tu sais comment je peux faire cela
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
19 avril 2011 à 17:43
Bah oui, il n'y a pas de changement, normal que l'évènement ne se produise pas.
Repense à ce que je t'ai proposé lors de nos premiers échanges : OnKey associé à une touche.
0
petarr Messages postés 17 Date d'inscription vendredi 15 avril 2011 Statut Membre Dernière intervention 22 avril 2011
20 avril 2011 à 11:42
comment je peux faire cela?

merci
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 avril 2011 à 12:09
-1- Tu regardes dans l'aide
-2- Tu tapes "OnKey" dans la recherche sur vbfrance
-3- et tu fais des essais
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
20 avril 2011 à 13:06
Salut,

il existe un snippet qui fait à peut près la même chose : http://www.codyx.org/snippet_pseudo-checkbox_712.aspx

la différence est que ce snippet ajoute ou enlève une chaîne de caractère mise à part cela, c'est une bonne base pour répondre au besoin.
Pour répondre complètement à ton besoin tu devras :

-ajouter la gestion de la couleur de la cellule lors du clic
-modifier et remplacer la constante "marque" par une fonction qui gère le texte à poser dans la cellule active

De plus, une cellule n'est pas un bouton !!!
Donc quand elle est active elle active ! cliquer à nouveau dessus ne changera rien ! le seul moyen de faire la correction comme tu le souhaites est soit de sélectionner une autre cellule puis revenir sur la cellule à modifier, soit utilisé un autre événement comme le clic droit de la souris.

Reste que tu devras faire l'effort de comprendre comment utiliser ce code! Note bien que ce que tu veux faire est compliqué pour un débutant et qu'on n'est pas ici pour fournir une prestation clés en main.

Par contre si tu as des questions j'y répondrais volontiers.

A+
0
petarr Messages postés 17 Date d'inscription vendredi 15 avril 2011 Statut Membre Dernière intervention 22 avril 2011
20 avril 2011 à 14:36
Merci à vous deux

La gestion de la couleur et du texte est déjà faite...

Un des problèmes est effectivement comment faire pour clicker sur la cellule active et faire marcher la macro... il n'y a pas une commande pour le "mouse click"?

Jack je vais voir ce que c'est le OnKey

En fait je voudrais utiliser la case d'option... Quand La case 1 est active, chaque click dans la plage A1:P12 fait un formatage des cellules

Je continue à creuser

:)
0
petarr Messages postés 17 Date d'inscription vendredi 15 avril 2011 Statut Membre Dernière intervention 22 avril 2011
20 avril 2011 à 14:38
Bigfish, c'est vrai que le code dans ton exemple est un peu complexe et difficile à comprendre :(
0
petarr Messages postés 17 Date d'inscription vendredi 15 avril 2011 Statut Membre Dernière intervention 22 avril 2011
20 avril 2011 à 15:43
Pourquoi ca ne marche pas?

Sub TEST1()
Application.OnKey "{ENTER}", "PROCEDURE"
End Sub
Sub PROCEDURE()
selection.Cells = 1
End Sub
0
petarr Messages postés 17 Date d'inscription vendredi 15 avril 2011 Statut Membre Dernière intervention 22 avril 2011
20 avril 2011 à 16:05
c'est ca en fait

Private Sub Worksheet_Activate()
Application.OnKey "{ENTER}", "PROCEDURE"
End Sub

Sub PROCEDURE() 'dans n module
selection.Cells = 1
ActiveWorkbook.Sheets.Add
End Sub
0
petarr Messages postés 17 Date d'inscription vendredi 15 avril 2011 Statut Membre Dernière intervention 22 avril 2011
20 avril 2011 à 16:34
je n'arrive pas à utiliser OnKey :(

help

j'ai essayé 3 exemples dans les forums mais non
je ne sais pas comment faire
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 avril 2011 à 18:46
Avant de dire que ça ne marche pas, as-tu seulement essayé de faire une recherche de OnKey parmi les sources du site ?
Si oui, il te suffit donc de détailler ces sources et de voir où et comment c'est déclaré.

Pour qu'une Sub puisse être appelée, il faut qu'elle soit déclarée en Public
0
kheus1990 Messages postés 1 Date d'inscription jeudi 21 avril 2011 Statut Membre Dernière intervention 21 avril 2011
21 avril 2011 à 01:01
bonjour je voulais faire une macro qui remplace les valeurs contenues dans une colonne par dautres prises dans un fichier texte!!je voudrais si on tape le chemin du fichier sur une cellule ca remplit autamtiquement la colonne.
je voudrais utiliser worksheet_change
comment je pe faire svp
merci
cordialement
0
Rejoignez-nous