Macro excel pour transformer L1C1 en A1

Signaler
Messages postés
6
Date d'inscription
samedi 15 janvier 2005
Statut
Membre
Dernière intervention
5 septembre 2007
-
Messages postés
6
Date d'inscription
samedi 15 janvier 2005
Statut
Membre
Dernière intervention
5 septembre 2007
-
Salut a tous

bon deja, je previens, je n'y connais strictement rien en VB, desolé
j'ai essayé de rechercher un peu partout, mais je trouve rien..
j'espere deja poster au bon endroit

donc je m'explique,
on m'a demandé de faire un "patch" sur excel
le but:
on a un fichier excel (j'ai pas le droit de modifier le code et les macros qui le genere... ) qui a des liens genre 'feuille1'!L1C1
et vu qu'il faut que ca marche sur excel version anglaise (car elle connait pas L1C1, mais plutot R1C1, ou A1), on m'a dit de faire un truc pour remplacer tous les L1C1 par des A1.
donc genre une macro qui va parcourir le fichier, et des qu'il voit un L1C1 il remplace par A1 .

les questions que j'aurai....
est ce que c'est possible ?? (donc sans que la macro soit appelée avant la generation du fichier) donc en gros, importer et executer la macro que j'aurai faite a coté directement du fichier.
et si oui, si vous pouviez m'expliquer vite fait comment je pourrai faire car moi et excel, ca fait 4
et si vous pouviez me donner une petite ebauche du script

et oui, ca serait 10000 fois plus simple de corriger l'erreur a la source, dans le code qui genere le fichier excel, mais j'ai pas le droit de toucher a la version du logiciel

merci a tous en tout cas
mike, qui galere sur excel et VB

11 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Si tu ne peux pas modifier l'original, je pense qu'il te reste à refaire celui-ci avec ton propre code... Tu fais un copie des feuilles, puis tu copies tout le code que tu modifies à ta guise... C'est du moins ce que j'essaierais.

MPi
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
107
Salut,

Déjà commence par poser ta question dans le bon forum : tu fais du VBA et non du VB6.

je déplace vers le forum approprié.

______________________________________
DarK Sidious
Messages postés
6
Date d'inscription
samedi 15 janvier 2005
Statut
Membre
Dernière intervention
5 septembre 2007

oui mais non
en fait, on est censé donner une version du logiciel (donc executable + macro) et donc ca on ne peut pas les modifier
donc ce n'est pas le fait de ne pas modifier la macro principale, mais c'est le fait de donner la macro et l'exe qui ne corrigent pas ce probleme.

d'ou le fait qu'on m'a demandé de faire ce "patch", qui sera envoyé en plus, qui sera executé ensuite (si c'est possible) lorsque le fichier sera généré
Messages postés
6
Date d'inscription
samedi 15 janvier 2005
Statut
Membre
Dernière intervention
5 septembre 2007

arf, oui, j'avais vu ca Darksidious, mais apres avoir posté :(
et je sais pas s'il m'est possible de deplacer un sujet, ni meme d'editer ma reponse (d'ou mon double post)

merci en tout cas
Messages postés
143
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
6 septembre 2011

Hello mikeOSX

Il n'y a pas de truc à faire.
Excel adapte automatiquement le fichier a la langue du programme Excel donc une conversion interne.
Voir aussi Référence dans le Help de Excel et aussi About R1C1 références .<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
A plus sur VBFrance.com
42wawa42
Messages postés
6
Date d'inscription
samedi 15 janvier 2005
Statut
Membre
Dernière intervention
5 septembre 2007

Salut 42wawa42,

personnellement, j'ai pas pu tester ce probleme vu que je suis sous une version francaise.
mais on m'a dit que ca ne marchait (marcherait ?? ) pas sous la version anglaise.
apres je ne peux pas te dire qui a testé et s'ils l'ont testé ou s'ils se sont juste dit L=ligne, et en anglais Row, donc ca marchera pas.

mais il faut faire quelque chose ???
car le fichier, lorsqu'il est generé, on ecrit directement 'feuille1'!L1C1 et on ne passe pas par la creation d'un lien hypertexte, donc je sais pas si ca rentre en jeu.

merci
Messages postés
443
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
1 mars 2011
2
Salut,
As tu essayé     ActiveCell.Formula = "=ROUNDDOWN(RC[-2]/RC[-3],2)"

JML
 Partageons notre savoir et nos acquis
Messages postés
143
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
6 septembre 2011

Pour activer ou désactiver le style de référence L1C1

<ol>
<li>
Cliquez sur Options dans le menu Outils, puis sélectionnez l'onglet Général.


</li>
<li>
Sous Paramètres, activez ou désactivez la case à cocher Style de référence L1C1.


</li>
<li>
Voila  salutations 42wawa42


</li>
<li>
de Help Excel version xp 2002 avec SP3 (Francais)


</li>
</ol>
Messages postés
6
Date d'inscription
samedi 15 janvier 2005
Statut
Membre
Dernière intervention
5 septembre 2007

hello
merci pour vos reponses.

JM247L, j'ai essayé ce que tu as mis, mais soit j'ai pas compris ou le mettre, soit j'suis pas doué ^^
42wawa42: j'ai deja essayé ca, mais le seul changement que j'ai pu constater, ce sont les colonnes qui passent de A,B,C... a 1,2,3...
mais les liens ne bougent pas (sachant que sans avoir coché la case L1C1, j'utilise quand meme les liens L1C1 et qui marchent..; sur la version francaise)

pour le moment, j'avance un petit peu.
Pour info, maintenant, j'ai le droit de modifier la macro de la version... n'essayez pas de comprendre, moi j'ai arreté d'essayer de comprendre mon superieur :)

donc j'ai créé une fonction sur ce fichier que s'ils veulent modifier les L1C1 en A1, ils n'auront qu'a l'executer...
ca donne ca, mais c'est pas fini car ca marche pas forcement

For Sheet = 1 To Sheets.Count
        l_lastRow = Sheets(Sheet).Cells.SpecialCells(xlCellTypeLastCell).Row
        l_lastColumn = Sheets(Sheet).Cells.SpecialCells(xlCellTypeLastCell).Column
       
        For colonne = 1 To l_lastColumn
            Texte = Sheets(Sheet).Cells(ROW_HEADER, colonne).Value
            If LCase(Left(Texte, 11)) = "message id " And Texte <> "" Then
                For ligne = ROW_1ST_DATA + 1 To l_lastRow
                    If Sheets(Sheet).Cells(ligne, colonne).Value <> "" Then
                        '-Sheets(Sheet).Cells(ligne, colonne).Formula = "=ROUNDDOWN(RC[-2]/RC[-3],2)"
                        valeur = Sheets(Sheet).Cells(ligne, colonne).Value '- recupere la case, soit 'F1'!L6C1 par ex
                        longueur = Len(Sheets(Sheet).Cells(ligne, colonne).Value) '-recupere sa longueur
                        fin = Mid(valeur, longueur - 1) '-recupere la fin, pour savoir si c'est C1, pour ne pas le faire 50 fois :)
                        If fin = "C1" Then
                            gauche = Left(Sheets(Sheet).Cells(ligne, colonne).Value, longueur - 2) '-on vire le C1
                            final = Replace(gauche, "!L", "!A") '-et on remplace le L par le A
                            Sheets(Sheet).Cells(ligne, colonne).Value = final '-et on remet la version finale dans la case
                        End If
                    End If
                Next
            End If
        Next
    Next

donc le truc, ca me fait la modif correctement, sauf que apres avoir modifié ces cases... ba les liens ne marchent plus
et meme quand je modifie a la main, par defaut, c'est ecrit: 'F1'!L6C1
si je modifie par exemple pour mettre 'F1'!L7C1, ca me retire le premier ' de l'affichage, mais lorsque je clique sur la cellule, je vois bien pourtant ce '
donc je comprends plus grand chose la ^^
si je met par exemple un autre ' devant ce qui donne ''F1'!L7C1, ca m'ecrit ca en haut, mais que 'F1'!L7C1 dans la cellule...
ca marche pour le lien, mais je ne trouve pas ca propre du tout...
z'avez une chtite idée pour moi ??

merci
Messages postés
79
Date d'inscription
lundi 17 juillet 2006
Statut
Membre
Dernière intervention
25 septembre 2007

Ben déjà une apostrophe en début de cellule standard sous Excel signifie que tout ce qui suit est du texte.

Exemple: 'Coucou sera affiché Coucou et '=1+1 sera affiché =1+1... contrairement à =1+1 qui affichera 2.

Donc sit u veux que 'F1'!L7C1 marque le contenu de la cellule L7C1 dans la feuille F1 tu dois écrire ='F1'!L7C1

Tubafat
Messages postés
6
Date d'inscription
samedi 15 janvier 2005
Statut
Membre
Dernière intervention
5 septembre 2007

ok, je comprends mieux :)

mais ce que je me demande, c'est pourquoi quand je lis la cellule, il ne me redonne pas le ' en meme temps...
enfin bon, c'est pas grave, j'en ai mis un autre devant, et maintenant, ca marche, pas vraiment propre, mais c'est juste pour reparer le truc.
on fera mieux pour la nouvelle version ^^
merci en tout cas