Remplacer a partir d'un tableau Excel

Résolu/Fermé
elglouton Messages postés 189 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 11 novembre 2022 - 26 janv. 2011 à 19:28
elglouton Messages postés 189 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 11 novembre 2022 - 12 févr. 2011 à 10:55
Bonjour,

Je souhaiterais savoir si il est possible d'effectuer la fonction Rechercher/Remplace d'Excel de façon automatique???
Je m'explique:

dans la phrase "Pv(J1.1)>Pmaxb+0.15 et (TE8<J1.1-J1.2 until TE8>J1.1+J1.2)"
j'aimerais remplacer les termes "Pv";"(J1.1)";"(J1.2)";"Pmaxb" qui sont des abreviation
par leur nom en entier que j'ai mis sous forme de tableau
J1.1 = T° CHAUFFAGE AUXILIAIRE PAR DEFAUT
J1.2 = TOLERANCE TEMPERATURE DE REGLAGE
J1.3 = TOLERENCE T° ALARME DOUBLE ENVELOPPE +/-
...ect...
de façon automatique et ceci dans un classeur entier sachant que cette phrase est dans une seul et meme cellule.

Est ce possible ??
merci pour vos reponces


A voir également:

12 réponses

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
28 janv. 2011 à 07:07
Bonjour,

Teste ça :
Sub traiter()
    Dim c As Range, lig As Long, shListe As Worksheet
    Set shListe = Worksheets("Parametres")
    Application.ScreenUpdating = False
    For Each c In Selection
        For lig = 2 To shListe.[A65536].End(xlUp).Row
            c = Replace(c, " " & shListe.Cells(lig, 1) & " ", "'" & shListe.Cells(lig, 2) & "'")
        Next lig
    Next c
    Application.ScreenUpdating = True
End Sub


Tes abréviations dans les formules doivent être encadrées par des espaces (ne pas oublier le 1er caractère de la phrase). Ne pas en mettre dans les listes.

Plutôt que de modifier tes cellules il est possible de mettre la formule traduite en commentaire, ou bien d'y mettre un lexique réduit aux abréviations utilisées

eric
2
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
26 janv. 2011 à 22:20
Bonsoir,

Saisis tes abréviations dans la feuille Liste, les colonnes A et B ne doivent servir qu'à ça.
exemple

et ceci dans un classeur entier sachant que cette phrase est dans une seul et meme cellule
Là il faut être plus précis...
Toujours la même référence de cellule dans TOUTES les feuilles du classeur ?
Principe pour l'instant : tu sélectionnes une plage et tu lances la macro.

Pour plus de lisiblité j'ai ajouté des ' ' pour encadrer l'expression, tu peux les enlever dans le code.

eric
1
elglouton Messages postés 189 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 11 novembre 2022 1
26 janv. 2011 à 22:45
Merci beaucoup je pense que c'est exactement ce qu'il me faut malheureusement je ne comprend pas comment importer cette macro dans mon classeur encore jamais fais peut tu me guider
je t'ai mis le classeur sur ce lien si tu arrive a mieu comprendre http://www.cijoint.fr/cjlink.php?file=cj201101/cijDGdPGl0.xlsx

merci
1
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
26 janv. 2011 à 23:31
Re,

Le fichier s'appelle maintenant ....xlsm (car macro à l'intérieur, ne pas changer l'extension)

J'ai supposé que la feuille Liste était la feuille Parametres. Attention, tu as 'N°' en colonne A, si c'est présent dans une cellule traitée ça sera remplacé....

Je t'ai aussi ajouté un raccourci clavier, CTRL+r pour lancer la macro après la sélection des cellules.
http://www.cijoint.fr/cjlink.php?file=cj201101/cijlooY4ac.xlsm
Il faut activer et accepter les macros.

eric
0
elglouton Messages postés 189 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 11 novembre 2022 1
27 janv. 2011 à 08:28
Encore un grand merci Eric

J'ai maintenant compris comment intégrer une macro a une feuille excel (ajouter un module dans VB "arrête moi si je divague")

Je pense savoir a quoi correspond les différentes ligne de la macro
Sub remplace() le nom de la macro
Dim c As Range, lig As Long, shListe As Worksheet le domaine d'activité
Set shListe = Worksheets("Liste des Symbols") ou la macro prend les abreviation et leur ref.
Application.ScreenUpdating = False ?
For Each c In Selection pour chaque c sélectionnés
For lig = 2 To shListe.[A65536].End(xlUp).Row ?
c = Replace(c, shListe.Cells(lig, 1), "'" & shListe.Cells(lig, 2) & "'") on remplace les caractères compris dans la colonne 1 par ceux de la colonne 2 en les mettant entre '
Next lig
Next c
Application.ScreenUpdating = True
End Sub

A quoi correspond
[A65536] et lig dans For lig = 2 To shListe.[A65536].End(xlUp).Row
En fait mon tableau doit être trop complexe serait il possible de donner un nombre de caractère a check avant de remplacer?
je m'explique
dans la phrase G13= 1 et V(3)=1 ou 3 ou "G13" devrai être remplacer par CHAUFFAGE AUXILIAIRE il est remplacer par ECHELLE DE P° qui ce réfère a G1
et le t de "et" est replacer par TEMPS (en général)
cela donne donc ECHELLE DE P°'3= 1 e' TEMPS (en général)'V(3)=1 ou 3

http://www.cijoint.fr/cjlink.php?file=cj201101/cijTrPAoxh.xlsm

si c'est trop complexe a expliquer a un debutan comme moi je comprendrai tout a fai dit le moi juste merci
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 27/01/2011 à 20:12
Bonsoir,

shListe As Worksheet le domaine d'activité
Set shListe = Worksheets("Liste des Symbols") ou la macro prend les abreviation et leur ref.

oui, et c'est pour alléger le code et mettre shListe seulement partout où l'on fait référence au Worksheets("Liste des Symbols")

Application.ScreenUpdating = False
Pour accélérer le code, les cellules modifiées sont mises à jour en une fois à la fin de la macro (avec le =true)

For Each c In Selection pour chaque c sélectionnés exact, donc pour chaque cellule sélectionnée

c = Replace(c, shListe.Cells(lig, 1), "'" & shListe.Cells(lig, 2) & "'") on remplace les caractères compris dans la colonne 1 par ceux de la colonne 2 en les mettant entre '
tout à fait

For lig = 2 To shListe.[A65536].End(xlUp).Row
lig : variable qui va aller de 2 à la dernière ligne avec une valeur dans la colonne A (=.[A65536].End(xlUp).Row : en réalité on part du bas (A65536) et on remonte sur la 1ère cellule écrite et on récupère son n° avec .row)

dans la phrase G13= 1 et V(3)=1 ou 3 ou "G13" devrai être remplacer par CHAUFFAGE AUXILIAIRE il est remplacer par ECHELLE DE P° qui ce réfère a G1
et le t de "et" est replacer par TEMPS (en général)

ok, c'est moi qui ai mal travaillé. Ce n'est pas grave et je vois comment corriger mais je reçois du monde ce soir, pas sûr que je puisse poster ce soir...

eric

PS :
ton nouveau fichier est différent de l'exemple fourni
Quelle est ta liste ?
Celle de Parametres ou celle de 'Liste des Symbols' ? ou les 2 ?

De plus à-priori il faut tenir compte de la casse des caractères.
Tu confirmes ? Si oui la saisie devra totalement exacte avec majuscules/minuscules

Apparemment tu as bien saisi un espace après chaque abréviation ce qui facilite leur détection et lève les ambigüités. Par contre il faut absolument que cet espace soit bien présent dans les formules...

C'est donc un peu plus complexe que prévu, j'attends tes éclaircissements
0

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

Posez votre question
elglouton Messages postés 189 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 11 novembre 2022 1
27 janv. 2011 à 21:32
Je ne cesse de te remercier mais c'est vraiment cool ce que tu fais prendre du temps pour m'aider...
Amuse toi bien avec tes invités...j'attends tout de même avec impatience tes reponces toujours très claires
En fait j'ai mis ces deux feuilles mais au final je pence les regrouper en une seule et en avoir une autre avec les paramètres réel de T° et P° je sais ca ce complique encore c'est pour cela que je voulais savoir si je pouvais faire une macro pour chaque feuille et ca a l'air de fonctionner j'ai juste changer Worksheets et appelé la macro différemment en réutilisant celle que tu m'avais transmise.
Par contre les espaces des abréviations ne figurent pas dans formules je les ai donc supprimées en esperant que cela ne complique pas trop les choses.
Et effectivement il faut tenir compte de la classe des caractères mes saisies seront donc totalement exacte avec majuscules/minuscules.

Et encore un grand merci...
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
27 janv. 2011 à 22:54
Par contre les espaces des abréviations ne figurent pas dans formules je les ai donc supprimées en esperant que cela ne complique pas trop les choses.
Ben si
Comment savoir si le t de 'temps' est à replacer ou non ?
Si dans la formule le t à remplacer est toujours suivi d'un espace la macro peut le contrôler, mais si tu as t*2 ou t+2 ils ne seront pas remplacés si tu ne veux pas le remplacer dans 'temps'.
Dans ce cas il faudrait une liste de caractères qui definissent une fin de mot (comme un espace)
Ce qui complique singulièrement la macro
0
elglouton Messages postés 189 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 11 novembre 2022 1
27 janv. 2011 à 23:29
Alors je vais les remettre et adapter mes formules en fonction.
Mais cela aura tjs une faute pour le t de "et" qui est suivi d'un espace. sinon je mes chaque abréviation entre guillemets par exemple dans mes formules et dans la 1er colonne de mon tableau paramètre ???
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 28/01/2011 à 00:38
Si tu as de la liberté pour la rédaction des formules autant y encadrer les mots clés par des espaces ce qui règle presque tous les problèmes.
Tu peux les laisser sans espaces dans la liste.
eric
0
elglouton Messages postés 189 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 11 novembre 2022 1
28 janv. 2011 à 11:09
Et encore merci...
J'espère que tes invités ne m'en veulent pas trop...

C'est parfait je vais prendre pas mal de temps pour réécrire toute les formules mais ca devrais le faire.

Il reste juste quelque petites exceptions qui font encore des leurs...

( TE8 < J1.1 - J1.2 until TE8 > J1.1 + J1.2 )
donne
(Sonde relevant temperature double enveloppe<T° CHAUFFAGE AUXILIAIRE PAR DEFAUT-TOLERAN.TEMPERATURE DE REGLAGEuntilSonde relevant temperature double enveloppe>T° CHAUFFAGE AUXILIAIRE PAR DEFAUT+TOLERAN.TEMPERATURE DE REGLAGE)

until perd ses espaces

et quand j'ai plusieur abreviations cote cote

E3 E39 E39.1 E156
donne
Electrovanne (ev) charge air chambre moduleE39 E39.1Electrovanne commande VP156

j'en rajoute encore désoler aurais tu des pistes?

Et je me suis permis d'enlever les ' dans la retranscription en fait ce procès a pour but de "traduire" en phrase les formule pour que les non connaisseur de ces abréviations puisse les lire et comprendre sans problème.

et dernière question ces paramètres au final seront remplacer par des valeur numérique est-ce possible d'effectuer les calculs qui s'y réfèrent
Pv(J1.1)<Pmaxb+0.15 et TE8<J1.1-J1.3
donnera
1.0<1.05+0.15 et TE8<118-7
serait il possible que cela donne
1.0<1.20 et TE8<111
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
28 janv. 2011 à 19:53
until perd ses espaces
Il fallait remplacer les ' par des espaces.

serait il possible que cela donne
1.0<1.20 et TE8<111

Heuuu, ça fait un peu gros à faire...
0
elglouton Messages postés 189 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 11 novembre 2022 1
29 janv. 2011 à 00:16
Ok c'est vrai les formules c'est un peu trop...on oubli
En tout cas merci pour tout ça a été très constructif pour moi

Tout a l'air OK maintenant.plus qu'a mettre des espaces un peu partout dans mes formules...
0
elglouton Messages postés 189 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 11 novembre 2022 1
31 janv. 2011 à 18:00
Et voila qui est fait je pense que mon ti tableau est terminé au moin pour un cycle un grand merci a toi Eric.
Tout de même une ultime question pour celui qui voudrai bien répondre simplement pour ne pas recréer un nouveau sujet

Comment faire pour que les calculs dans

1,846 > 1,05 +0.15 et ( TE8 < 118.0 - 0.5 jusqu'a TE8 > 118.0 + 0.5 )
puissent s'effectuer

http://www.cijoint.fr/cjlink.php?file=cj201101/cijCqGdlrn.xlsm
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
31 janv. 2011 à 23:45
Bonsoir,

Je pense que c'est plus raisonnable de démarrer une nouvelle discussion car là je n'aurais pas le temps.
Précise quand même si seulement les + et - encadrés de valeurs t'interessent ce qui est beaucoup plus léger à prendre en compte.

eric
0
mais ouiiiiiiiiiiiiii!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
0
elglouton Messages postés 189 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 11 novembre 2022 1
1 févr. 2011 à 02:52
En effet seule les additions et soustractions m'interresse pour ce qui est des inférieure a et supérieur a. Si c'est vraiment compliquer je peu les laisser a l'apreciation de l'opérateur
un grand merci a toi en tout cas Eric c'est déjà très sympa!!
0
elglouton Messages postés 189 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 11 novembre 2022 1
9 févr. 2011 à 11:07
Me voila de retour désoler pour la reponce en retard

Juste une dernière mise au point avant que je puisse clore cette discussion qui ma apporter un grand nombre de bonne reponce encore merci Eriiic.

Tu m'avais parler de la possibilité de visualiser les changements apportés dans les cellules sous forme de commentaires "Plutôt que de modifier tes cellules il est possible de mettre la formule traduite en commentaire, ou bien d'y mettre un lexique réduit aux abréviations utilisées" et cela m'interresse après avoir tenter de faire les choses propres de plusieurs façon je pense que ce sera la plus pertinente.

Si tu peu me donner la marche a suivre cela serai parfait
0
elglouton Messages postés 189 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 11 novembre 2022 1
9 févr. 2011 à 11:14
Voici mon fichier pas final mais bien avancé
http://www.cijoint.fr/cjlink.php?file=cj201102/cijAGwTetc.xlsm
0
elglouton Messages postés 189 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 11 novembre 2022 1
12 févr. 2011 à 10:55
Je clos le sujet et en recréer un autre pour le finaliser sachant que je n'est pas de réponse.
0