OVH Cloud OVH Cloud

Execution macro

9 réponses
Avatar
Pierre.M
Bonjour a tous,

Dans un combobox j'ai une liste de references comportant des" _". La
reference choisie s'affiche en A1. Je ne veux pas imprimer les "_",
j'ai donc rajoute une macro qui les remplace par des " ". Ca fonctionne
bien mais je suis oblige d'abord de selectionner une cellule quelconque
pour que ca se fasse.
Y a t il moyen de faire le changement des le changement de selection
dans mon combobox?

Merci beaucoup et bon dimanche.

Pierre

9 réponses

Avatar
Youky
Private Sub ComboBox1_Click()
[A1] = ComboBox1.Text
Range("A1").Replace What:="_", Replacement:=""
End Sub

Pas de problème pour masquer la combobox
Si la macro est dans un module ou extérieur à la feuille il faut l'indiquer
Feuil.ComboBox1.Visible úlse
Youky

"Pierre.M" a écrit dans le message de news:
45325240$0$25929$
Bonjour a tous,

Dans un combobox j'ai une liste de references comportant des" _". La
reference choisie s'affiche en A1. Je ne veux pas imprimer les "_", j'ai
donc rajoute une macro qui les remplace par des " ". Ca fonctionne bien
mais je suis oblige d'abord de selectionner une cellule quelconque pour
que ca se fasse.
Y a t il moyen de faire le changement des le changement de selection dans
mon combobox?

Merci beaucoup et bon dimanche.

Pierre



Avatar
Pierre.M
On 2006-10-15 18:18:14 +0200, "Youky" said:

Private Sub ComboBox1_Click()
[A1] = ComboBox1.Text
Range("A1").Replace What:="_", Replacement:=""
End Sub


J'essaye ca de suite... Merci


Pas de problème pour masquer la combobox
Si la macro est dans un module ou extérieur à la feuille il faut l'indiquer
Feuil.ComboBox1.Visible úlse


Oui, c'est moi qui est fait une mauvaise manip'. J'ai plusieurs
Comboboxes que j'ai cree par copier/coller. J'ai donc plusieurs fois la
meme" reference" sur ma feuille, et la propriete Visible ne semble
s'appliquer qu'au premier Combobox dans ce cas. En changeant les
references tout rentre dans l'ordre. Il m'a fallu un moment pour
comprendre...

Merci pour ton aide et bonne soiree.

Pierre

Avatar
Michel Pierron
Bonjour Pierre;
Simplement:
[A1] = Replace(ComboBox1.Text, "_", "")

MP

"Pierre.M" a écrit dans le message de news:
45325240$0$25929$
Bonjour a tous,

Dans un combobox j'ai une liste de references comportant des" _". La
reference choisie s'affiche en A1. Je ne veux pas imprimer les "_", j'ai
donc rajoute une macro qui les remplace par des " ". Ca fonctionne bien
mais je suis oblige d'abord de selectionner une cellule quelconque pour
que ca se fasse.
Y a t il moyen de faire le changement des le changement de selection dans
mon combobox?

Merci beaucoup et bon dimanche.

Pierre



Avatar
Pierre.M
Bonsoir,

j'ai teste vos 2 solutions que je n'arrive pas a adapter a mon besoin.
J'obtiens, soit une "erreur1004-la methode Replace de la classe range a
echoue" soit une "erreur de compilation-sub ou function non definie".

Pourtant avec le code suivant (realise avec l'enregistreur) ca
fonctionne, mais seulement apres un click supplementaire dans n'importe
quelle cellule:

Private sub worksheet_selectionChange (by val target as excel.range)
cells.replace what:)"_", replacement:=" ", lookat:=xlpart,
searchorder:=xlbyrows, matchcase:úlse
end sub

De plus ca me les change tous, dans toutes les cellules, en une fois. Genial.

J'aimerais que ca fasse ca automatiquement lors de la selection dans
un combobox, mais je ne sais pas ou mettre le code...

Merci de vous y interesser encore une fois. Bonne soiree.

Pierre
Avatar
Youky
Bonsoir,
Tu places mal la macro, elle n'a rien à faire en worsheet_selectionChange
qui se déclenche chaque fois que tu te déplace de cellule.
Cells indique les cellules de la feuille entière.
Ta macro doit se déclencher lorsque l'on click sur un nom de la liste !
Donc il faut aller en combobox1 et l'événement sera Click
Sur chaque objet on peut agir sur plusieurs événements, ici c'est CLICK
Juste pour comprendre........
Dans l'éditeur en combobox de gauche "ComboBox1" et en combobox de droite
"Click"
Dans ton fichier va en mode création et fait un double click sur ton
combobox
Place ton curseur sous la dernière ligne et colle ces 3 lignes.
Youky

Private Sub ComboBox1_Click()
[A1] = Replace(ComboBox1.Text, "_", "")
End Sub



"Pierre.M" a écrit dans le message de news:
4533f844$0$25946$
Bonsoir,

j'ai teste vos 2 solutions que je n'arrive pas a adapter a mon besoin.
J'obtiens, soit une "erreur1004-la methode Replace de la classe range a
echoue" soit une "erreur de compilation-sub ou function non definie".

Pourtant avec le code suivant (realise avec l'enregistreur) ca fonctionne,
mais seulement apres un click supplementaire dans n'importe quelle
cellule:

Private sub worksheet_selectionChange (by val target as excel.range)
cells.replace what:)"_", replacement:=" ", lookat:=xlpart,
searchorder:=xlbyrows, matchcase:úlse
end sub

De plus ca me les change tous, dans toutes les cellules, en une fois.
Genial.

J'aimerais que ca fasse ca automatiquement lors de la selection dans un
combobox, mais je ne sais pas ou mettre le code...

Merci de vous y interesser encore une fois. Bonne soiree.

Pierre



Avatar
Pierre.M
Salut Youki,

Je comprends bien toutes tes explications et j'ai bien suivi toutes tes
consignes, je continue a obtenir un "Erreur de compilation Sub ou
Function non definie".
Peut-etre que Replace ne fonctionne pas sur le vieux Excel97 de mon
employeur...
Je vais essayer de trouver un truc pour plus avoir les "_" dans les
comboboxes. Ca sera peut-etre plus simple...

Merci pour ton aide et ta gentillesse (les explications...).

Pierre




2006-10-17 22:28:44 +0200, "Youky" said:

Bonsoir,
Tu places mal la macro, elle n'a rien à faire en worsheet_selectionChange
qui se déclenche chaque fois que tu te déplace de cellule.
Cells indique les cellules de la feuille entière.
Ta macro doit se déclencher lorsque l'on click sur un nom de la liste !
Donc il faut aller en combobox1 et l'événement sera Click
Sur chaque objet on peut agir sur plusieurs événements, ici c'est CLICK
Juste pour comprendre........
Dans l'éditeur en combobox de gauche "ComboBox1" et en combobox de
droite "Click"
Dans ton fichier va en mode création et fait un double click sur ton combobox
Place ton curseur sous la dernière ligne et colle ces 3 lignes.
Youky

Private Sub ComboBox1_Click()
[A1] = Replace(ComboBox1.Text, "_", "")
End Sub




Avatar
Youky
Tu as raison , sur 97 cela ne marche pas, j'ai testé
alors une déviation
[A1] = Left(ComboBox1.Text , Len(Combobox1.Text) - 1)
ou bien remplir le combo avec Additem Left(.........
Youky
Avatar
Pierre.M
Merci Youky, je vais voir ce que je peux en tirer.

En fait mon probleme c'est que je voudrais des Combos en cascades.
Alors je cherche des plages nommees a partir du choix en Combo1 pour
alimenter le Combo2 (une methode de AV qui fonctionne bien). Et comme
dans ma liste Combo1 il y a des mots composes (vente de gre a gre, etat
de denombrement...) en nommant mes plages je me retrouve avec des "_"
partout que je suis oblige d'essayer d'enlever ensuite. Je ne vois pas
trop comment faire autrement ...

Merci encore pour ton aide et bonne journee.

Pierre


PS: Une idee!!! Comment ecrire en vba "le 1er mot de la selection en
combobox1"" ou bien "les 4 1ere lettres du 1er mot de la selection en
Combobox1"?



On 2006-10-19 20:27:01 +0200, "Youky" said:

Tu as raison , sur 97 cela ne marche pas, j'ai testé
alors une déviation
[A1] = Left(ComboBox1.Text , Len(Combobox1.Text) - 1)
ou bien remplir le combo avec Additem Left(.........
Youky


Avatar
AV
de denombrement...) en nommant mes plages je me retrouve avec des "_" partout
que je suis oblige d'essayer d'enlever ensuite.


Un truc comme ça :
Application.Substitute([taPlageNommée], " ", "_")
ou
Application.Substitute([taPlageNommée], "_", " ")

AV