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

Signaler
Messages postés
17
Date d'inscription
vendredi 15 avril 2011
Statut
Membre
Dernière intervention
22 avril 2011
-
Messages postés
17
Date d'inscription
vendredi 15 avril 2011
Statut
Membre
Dernière intervention
22 avril 2011
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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)
Messages postés
17
Date d'inscription
vendredi 15 avril 2011
Statut
Membre
Dernière intervention
22 avril 2011

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é
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
??
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
Messages postés
17
Date d'inscription
vendredi 15 avril 2011
Statut
Membre
Dernière intervention
22 avril 2011

je sis débutant et j'ai besoin des réponses plus détaillées... je n'ai rien compris
Messages postés
17
Date d'inscription
vendredi 15 avril 2011
Statut
Membre
Dernière intervention
22 avril 2011

tu sais comment je peux changer la couleur de la cellule avec un click du souris?
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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.
Messages postés
17
Date d'inscription
vendredi 15 avril 2011
Statut
Membre
Dernière intervention
22 avril 2011

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
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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.
Messages postés
17
Date d'inscription
vendredi 15 avril 2011
Statut
Membre
Dernière intervention
22 avril 2011

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
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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.
Messages postés
17
Date d'inscription
vendredi 15 avril 2011
Statut
Membre
Dernière intervention
22 avril 2011

comment je peux faire cela?

merci
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
-1- Tu regardes dans l'aide
-2- Tu tapes "OnKey" dans la recherche sur vbfrance
-3- et tu fais des essais
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
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+
Messages postés
17
Date d'inscription
vendredi 15 avril 2011
Statut
Membre
Dernière intervention
22 avril 2011

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

:)
Messages postés
17
Date d'inscription
vendredi 15 avril 2011
Statut
Membre
Dernière intervention
22 avril 2011

Bigfish, c'est vrai que le code dans ton exemple est un peu complexe et difficile à comprendre :(
Messages postés
17
Date d'inscription
vendredi 15 avril 2011
Statut
Membre
Dernière intervention
22 avril 2011

Pourquoi ca ne marche pas?

Sub TEST1()
Application.OnKey "{ENTER}", "PROCEDURE"
End Sub
Sub PROCEDURE()
selection.Cells = 1
End Sub
Messages postés
17
Date d'inscription
vendredi 15 avril 2011
Statut
Membre
Dernière intervention
22 avril 2011

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
Messages postés
17
Date d'inscription
vendredi 15 avril 2011
Statut
Membre
Dernière intervention
22 avril 2011

je n'arrive pas à utiliser OnKey :(

help

j'ai essayé 3 exemples dans les forums mais non
je ne sais pas comment faire
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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
Messages postés
1
Date d'inscription
jeudi 21 avril 2011
Statut
Membre
Dernière intervention
21 avril 2011

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