Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ma premiere macro ?

15 réponses
Avatar
alainL
Bonjour,
J'utilise Word2002 sous XP2.
Je voudrais faire une macro qui me permettrait de transposer des accords...
Les lettres A, B, C.... sont écrites en rouge.
Pour le moment, j'en suis à "rechercher A en rouge et "remplacer par D"
Je cherche une solution du genre "rechercher A,B,C,D...." et "remplacer par
"D,E,F,G..."
Est-ce possible ?
Merci

Alain

10 réponses

1 2
Avatar
Geo

Bonjour,
J'utilise Word2002 sous XP2.
Je voudrais faire une macro qui me permettrait de transposer des accords...
Les lettres A, B, C.... sont écrites en rouge.
Pour le moment, j'en suis à "rechercher A en rouge et "remplacer par D"
Je cherche une solution du genre "rechercher A,B,C,D...." et "remplacer par
"D,E,F,G..."
Est-ce possible ?


Pauvre Word ! voilà qu'on lui fait faire de la musique maintenant,
alors qu'il existe des tas de bons logiciels pour cela.

Quand vous dites : j'en suis à "rechercher A en rouge et "remplacer par
D"
Cela, vous l'avez fait et ça marche ?
Si oui, quelle difficulté rencontrez vous pour l'autre ?

--
A+

Avatar
alainL
"Geo" a écrit dans le message de groupe de discussion :


Bonjour,
J'utilise Word2002 sous XP2.
Je voudrais faire une macro qui me permettrait de transposer des
accords...
Les lettres A, B, C.... sont écrites en rouge.
Pour le moment, j'en suis à "rechercher A en rouge et "remplacer par D"
Je cherche une solution du genre "rechercher A,B,C,D...." et "remplacer
par "D,E,F,G..."
Est-ce possible ?


Pauvre Word ! voilà qu'on lui fait faire de la musique maintenant, alors
qu'il existe des tas de bons logiciels pour cela.

Quand vous dites : j'en suis à "rechercher A en rouge et "remplacer par D"
Cela, vous l'avez fait et ça marche ?


Oui, (c'est assez élémentaire, je crois !)


Si oui, quelle difficulté rencontrez vous pour l'autre ?
Je voudrais effectuer d'un coup un remplacement "terme à terme":

si A alors ecrire C
si B alors ecrire D
si C alors ecrire E...... etc mais sans faire 6 macros consécutives !

(Ce n'est qu'un premier pas, car il y aura un bémol au propre et au figuré)

Je ne connais pas de logiciel spécial pour cette action, je n'ai pas
vraiment cherché non plus. Mais n'ayant aucune connaissance de l'utilisation
de word, cette petite recherche devrait me donner l'occasion de découvrir un
peu :-))
Bonne soirée

alain


Avatar
heureux-oli
Bonsoir,

Donc si A écrire E alors ??

--
Heureux-oli
http://heureuxoli.developpez.com/

----------------------------------------------------------------------------------

"alainL" a écrit dans le message de news:



"Geo" a écrit dans le message de groupe de discussion :


Bonjour,
J'utilise Word2002 sous XP2.
Je voudrais faire une macro qui me permettrait de transposer des
accords...
Les lettres A, B, C.... sont écrites en rouge.
Pour le moment, j'en suis à "rechercher A en rouge et "remplacer par D"
Je cherche une solution du genre "rechercher A,B,C,D...." et "remplacer
par "D,E,F,G..."
Est-ce possible ?


Pauvre Word ! voilà qu'on lui fait faire de la musique maintenant, alors
qu'il existe des tas de bons logiciels pour cela.

Quand vous dites : j'en suis à "rechercher A en rouge et "remplacer par
D"
Cela, vous l'avez fait et ça marche ?


Oui, (c'est assez élémentaire, je crois !)


Si oui, quelle difficulté rencontrez vous pour l'autre ?
Je voudrais effectuer d'un coup un remplacement "terme à terme":

si A alors ecrire C
si B alors ecrire D
si C alors ecrire E...... etc mais sans faire 6 macros consécutives !

(Ce n'est qu'un premier pas, car il y aura un bémol au propre et au
figuré)

Je ne connais pas de logiciel spécial pour cette action, je n'ai pas
vraiment cherché non plus. Mais n'ayant aucune connaissance de
l'utilisation de word, cette petite recherche devrait me donner l'occasion
de découvrir un peu :-))
Bonne soirée

alain




Avatar
Anacoluthe
Bonjour !

'heureux-oli' nous a écrit ...
Donc si A écrire E alors ??


AxEctAmAnt
mais que s'il est rouge ! :-)

Il suffit d'enregistrer une macro qui change les A rouges puis qui change les B
rouges puis qui... Et voilà une macro qui fait tout d'un coup !
S'il faut permuter circulairement les A,B,C... rouges, là un seul RR peut pas...

Anacoluthe
« N'ayez pas peur des fausses notes...
ça n'existe pas ! »
- Miles DAVIS

Avatar
alainL
"heureux-oli" a écrit dans le message de
groupe de discussion :
Bonsoir,

Donc si A écrire E alors ??

--
Heureux-oli
http://heureuxoli.developpez.com/

dans le style:


case a,b,c,d
print d,e,f,g

alain

Avatar
Geo

Quand vous dites : j'en suis à "rechercher A en rouge et "remplacer par D"
Cela, vous l'avez fait et ça marche ?


Oui, (c'est assez élémentaire, je crois !)


Donc vous êtes capable de remplacer la chaîne "A,B,C" par la chaîne
"C,D,E"

Si vous faites une rechercher / remplacer lettre par lettre, vous ne
saurez plus à un moment donné si une lettre fait partie de l'accord
d'origine ou de l'accord transposé.

Sinon vous pouvez balayer tout votre Document, lettre par lettre,
et faire votre transposition, mais je crois comprendre que c'est un
groupe de lettres.

--
A+


Avatar
Geo
Voici un exemple, en supposant que toutes les chaînes ont la même
longueur.

Sub Transpose()
Dim Accord As Range
Dim NbCar As Long
Dim Caract1 As Range
Dim Caract2 As Range
Dim Caract3 As Range
Dim Caract4 As Range
Dim Caract5 As Range
Dim Caract6 As Range
Dim Caract7 As Range
Dim Rouge As Long
Dim i As Long

NbCar = ActiveDocument.Characters.Count
For i = NbCar - 7 To 0 Step -1
Set Accord = ActiveDocument.Range(Start:=i, End:=i + 7)
Set Caract1 = ActiveDocument.Range(Start:=i + 0, End:=i + 1)
Set Caract2 = ActiveDocument.Range(Start:=i + 1, End:=i + 2)
Set Caract3 = ActiveDocument.Range(Start:=i + 2, End:=i + 3)
Set Caract4 = ActiveDocument.Range(Start:=i + 3, End:=i + 4)
Set Caract5 = ActiveDocument.Range(Start:=i + 4, End:=i + 5)
Set Caract6 = ActiveDocument.Range(Start:=i + 5, End:=i + 6)
Set Caract7 = ActiveDocument.Range(Start:=i + 6, End:=i + 7)
If Caract1.Font.Color <> wdColorRed Then GoTo Suivant
If Caract3.Font.Color <> wdColorRed Then GoTo Suivant
If Caract5.Font.Color <> wdColorRed Then GoTo Suivant
If Caract7.Font.Color <> wdColorRed Then GoTo Suivant

If Caract2.Text <> "," Then GoTo Suivant
If Caract4.Text <> "," Then GoTo Suivant
If Caract6.Text <> "," Then GoTo Suivant
' C'est un accord
Select Case Accord.Text
Case "A,B,C,D"
Debug.Print "Accord de type 1"
Accord.Text = "D,E,Fb,G" ' Transposition
End Select
Suivant:
Next
End Sub

--
A+
Avatar
alainL
"Geo" a écrit dans le message de groupe de discussion :

...................
Donc vous êtes capable de remplacer la chaîne "A,B,C" par la chaîne
"C,D,E"

Si vous faites une rechercher / remplacer lettre par lettre, vous ne
saurez plus à un moment donné si une lettre fait partie de l'accord
d'origine ou de l'accord transposé.

Sinon vous pouvez balayer tout votre Document, lettre par lettre,
et faire votre transposition, mais je crois comprendre que c'est un groupe
de lettres.



Non, un accord est représenté par un ou plusieurs caractères : "A" ou "A#"
ou "Bbm" "E7".... (= La, La dièse, Si bémol mineur, Mi 7ième....)

J'ai des gammes disponibles: A, B, C, D, E, F, G,A
D, E, F, G, A, Bb, C,
D
etc
Je détermine la gamme utilisée, par exemple la première ci-dessus
Je choisis la gamme dans laquelle je veux transposer les accords, la seconde

Word doit remplacer tous les A par D, tous les C par F etc (en gardant
éventuellement le m (mineur) ou un chiffre)

(pour éviter la confusion avec le texte des chansons, les accords seront
écrits en rouge)

Alain
(merci pour la macro passée en exemple ds un autre post, je vais étudier le
code :-))))

Avatar
Geo

Non, un accord est représenté par un ou plusieurs caractères : "A" ou "A#" ou "Bbm"
"E7".... (= La, La dièse, Si bémol mineur, Mi 7ième....)


Chaque nom comprend 1 à 3 caractères, est précédé d'un espace et suivi
d'un espace ou d'une virgule qui sont à restituer dans le résultat ?
Lequel résultat comprend 1 à 3 caractères ?

J'ai des gammes disponibles: A, B, C, D, E, F, G,A
D, E, F, G, A, Bb, C, D etc
Je détermine la gamme utilisée, par exemple la première ci-dessus
Je choisis la gamme dans laquelle je veux transposer les accords,


Vous voulez donc avoir n (?) correspondants possibles pour chaque
accord ?

(pour éviter la confusion avec le texte des chansons, les accords seront écrits en
rouge)


Bonne idée

(merci pour la macro passée en exemple ds un autre post,
Elle ne fait pas du tout ça.


Amha avant d'aller plus loin : faire en Word un tableau des
correspondances, du genre (je mets n'importe quoi dedans) :

"Base" "Plus un ton" "Moins 1/2 ton"
A B F
A# B# Ab
A7 B7 F7
Am Bm Fm
etc.
Dans la macro vous pourrez utiliser ce tableau ou le reproduire dans
des tables appropriées, mais ça permettra surtout de mettre les règles
noir sur blanc.
La première difficulté en programmation est de définir ce qu'on veut.
Ce n'est pas toujours simple.
Après, on peut chercher une solution.


--
A+

Avatar
alainL
"Geo" a écrit dans le message de groupe de discussion :

................................La première difficulté en programmation
est de définir ce qu'on veut.
Ce n'est pas toujours simple.
Après, on peut chercher une solution.

__________________________________________________________________________________________________

Voici une partie du tableau des gammes (gamme de C, de E .... suivant la
première note)


C C# D D# E F F# G G# A A# B
D D# E F F# G G# A A# B C C#
E F F# G G# A A# B C C# D D#
F Gb G Ab A Bb B C Db D Eb E
Bb B C Db D Eb E F Gb G Ab A


Si le morceau est écrit en C, on utilise des accords : C, F, G7, Am ....

et si je choisis de le jouer en F les accords à utiliser deviendront
respectivement F, Bb, C7, Dm... ( au même rang sur la ligne choisie)

Mon "application" devrait
- fournir deux zones de saisie : tonalité d'origine et tonalité choisie
afin de sélectionner les deux lignes.

- lire le texte, à chaque mot rouge rencontré, isoler les deux premiers
caractères si#, sinon le premier seul, chercher l'identique dans la ligne 1
et remplacer par son correspondant à la même place dans la ligne 2....

- en conservant éventuellement les mentions m,7 ,5 , dim .... (rencontrées
dans G7 ou Am7..) et laissées de côté pour le test...

< tonalité d'origine : F
< tonalité choisie : C

< F E7 C7
<---ligne rouge
< C'est une langue belle, avec des mots superbes...
devient :
< C B7 G7
< C'est une langue belle, avec des mots superbes...
________________________________________________________________________________________________________________

Voilà, ça semble simple ... à première vue :-))) et dans mon cas, plus
envisageable en QBasic ou VB4 mais dans Word, je nage !

alain

1 2