OVH Cloud OVH Cloud

Aide facile VBA Excel

13 réponses
Avatar
Raymond Poulain
Bonjour

J'ai hésité à poster ce message sur le newsgroup d'Excel, mais celui-ci est
plus directement concerné, même si ma question sera très facile pour vous.

Je voudrais dans une cellule Excel 2000 enlever les 2 derniers caractères,
au moment où la macro se trouve sur la cellule en question.
J'ai essayé avec l'éditeur automatique, en mode relatif ou absolu, mais cela
ne marche pas (il ne transcrit que le résultat, c'est à dire le contenu de la
cellule coupée... mais comme le contenu de la cellule change à chaque boucle
de la macro...).
J'ai essayé l'aide, mais n'ai pas trouvé!

Qui peut me donner un coup de main?

Merci d'avance

A+

Raymond

10 réponses

1 2
Avatar
patrick
Bonjour,

dans ta boucle tu calcules le nombre
de caracteres et tu prends a partir de la gauche
-2 caracteres :
variable = left(activecell),len(activecell)-2)

@+
patrick

"Raymond Poulain" a écrit dans le
message news:
Bonjour

J'ai hésité à poster ce message sur le newsgroup d'Excel, mais celui-ci


est
plus directement concerné, même si ma question sera très facile pour vous.

Je voudrais dans une cellule Excel 2000 enlever les 2 derniers caractères,
au moment où la macro se trouve sur la cellule en question.
J'ai essayé avec l'éditeur automatique, en mode relatif ou absolu, mais


cela
ne marche pas (il ne transcrit que le résultat, c'est à dire le contenu de


la
cellule coupée... mais comme le contenu de la cellule change à chaque


boucle
de la macro...).
J'ai essayé l'aide, mais n'ai pas trouvé!

Qui peut me donner un coup de main?

Merci d'avance

A+

Raymond


Avatar
Raymond Poulain
Bonjour Patrick

Merci... mais je craignais ce type de réponse étant donné la diifférence
colossale de niveau entre toi et moi.
Ma macro a été entièrement écrite avec l'editeur automatique (sauf les
instructions de boucle), aussi je ne sais pas ce qu'il faut faire avec ton
instruction.
Dans ma macro à l'endoit de la cellule concernée, j'ai l'instruction:
Range("A1").Select

Faut-il intercaler la ligne que tu me cites immédiatement dessous ?
Ou autre chose?

Désolé d'être si basique (et pas visual basique !)

Merci

Ray

"patrick" a écrit :

Bonjour,

dans ta boucle tu calcules le nombre
de caracteres et tu prends a partir de la gauche
-2 caracteres :
variable = left(activecell),len(activecell)-2)

@+
patrick

"Raymond Poulain" a écrit dans le
message news:
> Bonjour
>
> J'ai hésité à poster ce message sur le newsgroup d'Excel, mais celui-ci
est
> plus directement concerné, même si ma question sera très facile pour vous.
>
> Je voudrais dans une cellule Excel 2000 enlever les 2 derniers caractères,
> au moment où la macro se trouve sur la cellule en question.
> J'ai essayé avec l'éditeur automatique, en mode relatif ou absolu, mais
cela
> ne marche pas (il ne transcrit que le résultat, c'est à dire le contenu de
la
> cellule coupée... mais comme le contenu de la cellule change à chaque
boucle
> de la macro...).
> J'ai essayé l'aide, mais n'ai pas trouvé!
>
> Qui peut me donner un coup de main?
>
> Merci d'avance
>
> A+
>
> Raymond





Avatar
Gloops
Bonjour Raymond,

Avec l'enregistrement automatique tu ne pourras pas faire ce que tu veux
faire. Tout ce que tu auras c'est une macro qui te mettra en dur le même
contenu qu'avant l'enregistrement, moins deux caractères. Donc pas
modulable pour deux sous.

Il va donc bien falloir plonger un peu dans la doc de VBA.

Pour commencer, l'aide sur Left et Len te permettra de comprendre assez
rapidement comment fonctionne la syntaxe indiquée par Patrick.

Ensuite il faut adapter à la version d'Excel que tu utilises, et trouver
quel événement s'exécute lorsque tu quittes la cellule. Là je n'ai guère
que la version 95 sous la main ...

Finalement, dans la macro événementielle correspondante, tu mets la
syntaxe indiquée par Patrick, en remplaçant toutefois ActiveCell par ce
qu'il faut pour désigner la cellule que tu viens de quitter. Lis l'aide
de Cell et celle de Range, et regarde bien en haut si il y a un lien
"événements".

D'après ce que tu dis il faut envisager d'y passer quelques heures.
Moyennant quoi il suffit d'un peu de concentration pour arriver au bout,
et la prochaine fois tu fais ça "les doigts dans le nez".
Avatar
Raymond Poulain
Bonjour à tous,

J'ai passé 4 heures sur le sujet mais ne suis arrivé à rien !
Désolé.
Si quelqu'un peut me donner la soluce clé en main il sera le bienvenue,
sinon je passe. Je ne peux m'investir davantage, c'est une question de
priorités.
Note: j'ai Excel 2000 et je ne quitte pas la cellule, en fait j'y reste et
je veux la modier en enlevant les 2 derniers caractères et le contenu de la
cellule a été copié (valeurs) d'un autre fichier Excel qui lui ne peut être
modifié.
Merci d'avance... qui sait ?

A+

Ray

"Gloops" a écrit :

Bonjour Raymond,

Avec l'enregistrement automatique tu ne pourras pas faire ce que tu veux
faire. Tout ce que tu auras c'est une macro qui te mettra en dur le même
contenu qu'avant l'enregistrement, moins deux caractères. Donc pas
modulable pour deux sous.

Il va donc bien falloir plonger un peu dans la doc de VBA.

Pour commencer, l'aide sur Left et Len te permettra de comprendre assez
rapidement comment fonctionne la syntaxe indiquée par Patrick.

Ensuite il faut adapter à la version d'Excel que tu utilises, et trouver
quel événement s'exécute lorsque tu quittes la cellule. Là je n'ai guère
que la version 95 sous la main ...

Finalement, dans la macro événementielle correspondante, tu mets la
syntaxe indiquée par Patrick, en remplaçant toutefois ActiveCell par ce
qu'il faut pour désigner la cellule que tu viens de quitter. Lis l'aide
de Cell et celle de Range, et regarde bien en haut si il y a un lien
"événements".

D'après ce que tu dis il faut envisager d'y passer quelques heures.
Moyennant quoi il suffit d'un peu de concentration pour arriver au bout,
et la prochaine fois tu fais ça "les doigts dans le nez".




Avatar
Gloops
Bonjour Raymond,

Hum, oui, quand je disais quelques heures, ça pouvait faire plus que
quatre ... Il y a quand même les bases à assimiler.

Bon alors après je passe le relais à quelqu'un qui a Excel 2000 sous la
main.
______________________________________________
Raymond Poulain a écrit, le 11/10/2005 11:53 :

Bonjour à tous,

J'ai passé 4 heures sur le sujet mais ne suis arrivé à rien !
Désolé.
Si quelqu'un peut me donner la soluce clé en main il sera le bienvenue,
sinon je passe. Je ne peux m'investir davantage, c'est une question de
priorités.
Note: j'ai Excel 2000 et je ne quitte pas la cellule, en fait j'y reste et
je veux la modier en enlevant les 2 derniers caractères et le contenu de la
cellule a été copié (valeurs) d'un autre fichier Excel qui lui ne peut être
modifié.
Merci d'avance... qui sait ?

A+

Ray


Avatar
Gloops
Re,

Je vais me permettre de reformuler, parce que si un jour quelqu'un
s'attaque à ça, et qu'il ne peut pas y revenir plusieurs fois, ça serait
dommage de ne pas aboutir à ce moment-là.

Tu pars du principe que dans ton classeur il n'y a pas de formules,
seulement du texte. Lorsqu'on se place sur une cellule (au moment où on
arrive dessus), les deux derniers caractères de son contenu doivent
disparaître.


______________________________________________
Raymond Poulain a écrit, le 28/09/2005 21:41 :

Bonjour

J'ai hésité à poster ce message sur le newsgroup d'Excel, mais celui-ci est
plus directement concerné, même si ma question sera très facile pour vous.

Je voudrais dans une cellule Excel 2000 enlever les 2 derniers caractères,
au moment où la macro se trouve sur la cellule en question.
J'ai essayé avec l'éditeur automatique, en mode relatif ou absolu, mais cela
ne marche pas (il ne transcrit que le résultat, c'est à dire le contenu de la
cellule coupée... mais comme le contenu de la cellule change à chaque boucle
de la macro...).
J'ai essayé l'aide, mais n'ai pas trouvé!

Qui peut me donner un coup de main?

Merci d'avance

A+

Raymond


Avatar
Raymond Poulain
Bojour Gloops

Merci de ta gentillesse.
En effet, la cellule est contient un texte variable (selon la boucle), mais
ce texte se termine toujours après copie valeur par une virgule et un espace
et ce sont les 2 caractères que je veux enlever (par exemple, 1ère boucle
'Hugo, ', 2nde boucle 'Mallarmé, Proust et Raimbaud, ', donc juste après le
moment où j'ai copié valeurs d'une autre cellule, je suis toujours avec 'Hugo
' et je veux enlever ', ').
J'espère que je suis limpide

A+

Ray


"Gloops" a écrit :

Re,

Je vais me permettre de reformuler, parce que si un jour quelqu'un
s'attaque à ça, et qu'il ne peut pas y revenir plusieurs fois, ça serait
dommage de ne pas aboutir à ce moment-là.

Tu pars du principe que dans ton classeur il n'y a pas de formules,
seulement du texte. Lorsqu'on se place sur une cellule (au moment où on
arrive dessus), les deux derniers caractères de son contenu doivent
disparaître.


______________________________________________
Raymond Poulain a écrit, le 28/09/2005 21:41 :

> Bonjour
>
> J'ai hésité à poster ce message sur le newsgroup d'Excel, mais celui-ci est
> plus directement concerné, même si ma question sera très facile pour vous.
>
> Je voudrais dans une cellule Excel 2000 enlever les 2 derniers caractères,
> au moment où la macro se trouve sur la cellule en question.
> J'ai essayé avec l'éditeur automatique, en mode relatif ou absolu, mais cela
> ne marche pas (il ne transcrit que le résultat, c'est à dire le contenu de la
> cellule coupée... mais comme le contenu de la cellule change à chaque boucle
> de la macro...).
> J'ai essayé l'aide, mais n'ai pas trouvé!
>
> Qui peut me donner un coup de main?
>
> Merci d'avance
>
> A+
>
> Raymond




Avatar
Gloops
OK. Ce ne serait pas une feuille qui résulterait de l'ouverture d'un
fichier de type CSV, des fois ? Tu sais, le "comma separated values" ...

Autre question : pourquoi retirer la virgule et l'espace seulement au
moment de sélectionner la cellule ?
Est-ce que ça ne serait pas aussi simple de le faire d'une traite, sur
toute la feuille ?

Tu sais, par un truc du genre

Public Sub RetireLaFin()
For Each C In ActiveSheet.UsedRange
If Len(C.Text) > 2 Then
C.Value = Left$(C.Text, Len(C.Text) - 2)
Else
C = ""
End If
Next
End Sub

Tu colles ça dans un module, et puis dans le menu tu appelles cette
macro pour l'exécuter ... Attention, cette macro ne travaille que sur la
feuille courante.


______________________________________________
Raymond Poulain a écrit, le 11/10/2005 14:26 :
Bojour Gloops

Merci de ta gentillesse.
En effet, la cellule est contient un texte variable (selon la boucle), mais
ce texte se termine toujours après copie valeur par une virgule et un espace
et ce sont les 2 caractères que je veux enlever (par exemple, 1ère boucle
'Hugo, ', 2nde boucle 'Mallarmé, Proust et Raimbaud, ', donc juste après le
moment où j'ai copié valeurs d'une autre cellule, je suis toujours avec 'Hugo
' et je veux enlever ', ').
J'espère que je suis limpide

A+

Ray


"Gloops" a écrit :


Re,

Je vais me permettre de reformuler, parce que si un jour quelqu'un
s'attaque à ça, et qu'il ne peut pas y revenir plusieurs fois, ça serait
dommage de ne pas aboutir à ce moment-là.

Tu pars du principe que dans ton classeur il n'y a pas de formules,
seulement du texte. Lorsqu'on se place sur une cellule (au moment où on
arrive dessus), les deux derniers caractères de son contenu doivent
disparaître.


______________________________________________
Raymond Poulain a écrit, le 28/09/2005 21:41 :


Bonjour

J'ai hésité à poster ce message sur le newsgroup d'Excel, mais celui-ci est
plus directement concerné, même si ma question sera très facile pour vous.

Je voudrais dans une cellule Excel 2000 enlever les 2 derniers caractères,
au moment où la macro se trouve sur la cellule en question.
J'ai essayé avec l'éditeur automatique, en mode relatif ou absolu, mais cela
ne marche pas (il ne transcrit que le résultat, c'est à dire le contenu de la
cellule coupée... mais comme le contenu de la cellule change à chaque boucle
de la macro...).
J'ai essayé l'aide, mais n'ai pas trouvé!

Qui peut me donner un coup de main?

Merci d'avance

A+

Raymond








Avatar
Raymond Poulain
Oh non, c'est infiniment simple: dans l'autre fichier dont je copie une
cellule, il y a une formule (que je ne peux changer)... c'est pour cela que
je "copie-valeurs", mais la présence de la virgule ne joue pas (j'ai essayé
avec d'autres caractères).
Ici il ne s'agit que d'une banale instruction VBA que je ne connais pas car
la macro existante a été générée automatiquement par l'éditeur Excel et elle
marche... sauf que esthétiquement il y a une cellule qui se termine par ', '.
(N.B.: oui il y a beaucoup d'autres cellules copiées de la même façon,
certaines avec ', ' placé au hasard, jamais à la fin, mais c'est la seule
avec ce problème "esthétique").

A+

Ray

"Gloops" a écrit :

OK. Ce ne serait pas une feuille qui résulterait de l'ouverture d'un
fichier de type CSV, des fois ? Tu sais, le "comma separated values" ...

Autre question : pourquoi retirer la virgule et l'espace seulement au
moment de sélectionner la cellule ?
Est-ce que ça ne serait pas aussi simple de le faire d'une traite, sur
toute la feuille ?

Tu sais, par un truc du genre

Public Sub RetireLaFin()
For Each C In ActiveSheet.UsedRange
If Len(C.Text) > 2 Then
C.Value = Left$(C.Text, Len(C.Text) - 2)
Else
C = ""
End If
Next
End Sub

Tu colles ça dans un module, et puis dans le menu tu appelles cette
macro pour l'exécuter ... Attention, cette macro ne travaille que sur la
feuille courante.


______________________________________________
Raymond Poulain a écrit, le 11/10/2005 14:26 :
> Bojour Gloops
>
> Merci de ta gentillesse.
> En effet, la cellule est contient un texte variable (selon la boucle), mais
> ce texte se termine toujours après copie valeur par une virgule et un espace
> et ce sont les 2 caractères que je veux enlever (par exemple, 1ère boucle
> 'Hugo, ', 2nde boucle 'Mallarmé, Proust et Raimbaud, ', donc juste après le
> moment où j'ai copié valeurs d'une autre cellule, je suis toujours avec 'Hugo
> ' et je veux enlever ', ').
> J'espère que je suis limpide
>
> A+
>
> Ray
>
>
> "Gloops" a écrit :
>
>
>>Re,
>>
>>Je vais me permettre de reformuler, parce que si un jour quelqu'un
>>s'attaque à ça, et qu'il ne peut pas y revenir plusieurs fois, ça serait
>>dommage de ne pas aboutir à ce moment-là.
>>
>>Tu pars du principe que dans ton classeur il n'y a pas de formules,
>>seulement du texte. Lorsqu'on se place sur une cellule (au moment où on
>>arrive dessus), les deux derniers caractères de son contenu doivent
>>disparaître.
>>
>>
>>______________________________________________
>>Raymond Poulain a écrit, le 28/09/2005 21:41 :
>>
>>
>>>Bonjour
>>>
>>>J'ai hésité à poster ce message sur le newsgroup d'Excel, mais celui-ci est
>>>plus directement concerné, même si ma question sera très facile pour vous.
>>>
>>>Je voudrais dans une cellule Excel 2000 enlever les 2 derniers caractères,
>>>au moment où la macro se trouve sur la cellule en question.
>>>J'ai essayé avec l'éditeur automatique, en mode relatif ou absolu, mais cela
>>>ne marche pas (il ne transcrit que le résultat, c'est à dire le contenu de la
>>>cellule coupée... mais comme le contenu de la cellule change à chaque boucle
>>>de la macro...).
>>>J'ai essayé l'aide, mais n'ai pas trouvé!
>>>
>>>Qui peut me donner un coup de main?
>>>
>>>Merci d'avance
>>>
>>>A+
>>>
>>>Raymond
>>
>>




Avatar
Gloops
Bon, alors il s'agit d'un transfert entre deux fichiers.

Alors essaie de tout me dire d'un coup ...
Le fichier source, il est de quel type ? Qu'est-ce qu'il y a dedans ?
Tu transfères tout, ou une partie ?
Une feuille, ou plusieurs ?
En une fois, ou en plusieurs fois ?
Elle sort d'où, cette virgule ?

Ah il y a une macro. Qu'est-ce qu'elle fait, au juste ?
Elle est longue ? Peut-être qu'on peut voir ?
______________________________________________
Raymond Poulain a écrit, le 11/10/2005 17:13 :
Oh non, c'est infiniment simple: dans l'autre fichier dont je copie une
cellule, il y a une formule (que je ne peux changer)... c'est pour cela que
je "copie-valeurs", mais la présence de la virgule ne joue pas (j'ai essayé
avec d'autres caractères).
Ici il ne s'agit que d'une banale instruction VBA que je ne connais pas car
la macro existante a été générée automatiquement par l'éditeur Excel et elle
marche... sauf que esthétiquement il y a une cellule qui se termine par ', '.
(N.B.: oui il y a beaucoup d'autres cellules copiées de la même façon,
certaines avec ', ' placé au hasard, jamais à la fin, mais c'est la seule
avec ce problème "esthétique").

A+

Ray


1 2