Transformer une formule excel complexe en macro

Fermé
lenovofe - 4 juin 2015 à 11:31
 lenovofe - 4 juin 2015 à 15:37
Bonjour,

Pour obtenir des informations spécifiques sur un produit dans mon tableau excel, j'ai créé cette formule :

=SI(NBCAR(GAUCHE(MAJUSCULE(SUPPRESPACE((GAUCHE(AU45;5)&" "&SI(NB.SI(AW45;"*Revêtement*");"";GAUCHE(AW45;3))&"  "&GAUCHE(BJ45;10)& " " &BU45&" "&SI(OU(NBCAR(BB45)=0; NBCAR(BB45)=1);"";GAUCHE(BB45; NBCAR(BB45)-2))& " " &GAUCHE(AZ45;9))));30))<30; GAUCHE(MAJUSCULE(SUPPRESPACE((GAUCHE(AU45;13)&" "&SI(NB.SI(AW45;"*Revêtement*");"";GAUCHE(AW45;3))& " " & GAUCHE(BJ45;10)& " " &SI(NB.SI(BF45;"*TRANSPAREN*");"";GAUCHE(BF45;3))&" "&SI(OU(NBCAR(BB45)=0; NBCAR(BB45)=1);"";GAUCHE(BB45; NBCAR(BB45)-2))& " " &GAUCHE(AZ45;9)&" "&SI(NB.SI(AW45;"*Revêtement*");"";GAUCHE(AW45;3)))));30);GAUCHE(MAJUSCULE(SUPPRESPACE((GAUCHE(AU45;5)&" "&SI(NB.SI(AW45;"*Revêtement*");"";GAUCHE(AW45;3))& " " & GAUCHE(BJ45;10)& " " &SI(NB.SI(BF45;"*TRANSPAREN*");"";GAUCHE(BF45;3))&" "&SI(OU(NBCAR(BB45)=0; NBCAR(BB45)=1);"";GAUCHE(BB45; NBCAR(BB45)-2))& " " &GAUCHE(AZ45;9)&" "&GAUCHE(AW45;11))));30))



Je sais qu'elle n'est pas vraiment esthétique mais elle fonctionne très bien. Cependant, il faudrait que je la transforme en macro. En enregistrant ce que je fais dans Visual Basic, le code s'écrit automatiquement mais je ne peux pas le compiler (erreur 1004). Comment obtenir une macro fonctionnel et utilisable pour d'autres fichier excel du même modèle ?

Merci beaucoup d'avance.
A voir également:

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
4 juin 2015 à 12:41
Bonjour,

Qu'entends tu par : il faudrait que je la transforme en macro??
Est ce que tu veux une macro qui t'affiche son résultat ou tu veux une macro qui te saisis la formule?
0
Je voudrais une macro qui, une fois compilée, m'affiche le résultat dans mon tableau excel.
La formule ci-dessus est la formule contenue dans une cellule (ligne 4 ici), mais elle répétée (et adaptée automatiquement) pour toutes les lignes n+1 de mon tableau.
Je ne sais pas du tout comment m'y prendre pour créer ma macro. J'ai regardé des tutos pour apprendre le langage VBA mais ça ne m'a pas beaucoup éclairé.

Merci pour votre aide.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744 > lenovofe
4 juin 2015 à 13:39
Si je comprends bien, ta formule pour la ligne 4 est :
=SI(NBCAR(GAUCHE(MAJUSCULE(SUPPRESPACE((GAUCHE(AU45;5)&" "&SI(NB.SI(AW45;"*Revêtement*");"";GAUCHE(AW45;3))&"  "&GAUCHE(BJ45;10)& " " &BU45&" "&SI(OU(NBCAR(BB45)=0; NBCAR(BB45)=1);"";GAUCHE(BB45; NBCAR(BB45)-2))& " " &GAUCHE(AZ45;9))));30))<30; GAUCHE(MAJUSCULE(SUPPRESPACE((GAUCHE(AU45;13)&" "&SI(NB.SI(AW45;"*Revêtement*");"";GAUCHE(AW45;3))& " " & GAUCHE(BJ45;10)& " " &SI(NB.SI(BF45;"*TRANSPAREN*");"";GAUCHE(BF45;3))&" "&SI(OU(NBCAR(BB45)=0; NBCAR(BB45)=1);"";GAUCHE(BB45; NBCAR(BB45)-2))& " " &GAUCHE(AZ45;9)&" "&SI(NB.SI(AW45;"*Revêtement*");"";GAUCHE(AW45;3)))));30);GAUCHE(MAJUSCULE(SUPPRESPACE((GAUCHE(AU45;5)&" "&SI(NB.SI(AW45;"*Revêtement*");"";GAUCHE(AW45;3))& " " & GAUCHE(BJ45;10)& " " &SI(NB.SI(BF45;"*TRANSPAREN*");"";GAUCHE(BF45;3))&" "&SI(OU(NBCAR(BB45)=0; NBCAR(BB45)=1);"";GAUCHE(BB45; NBCAR(BB45)-2))& " " &GAUCHE(AZ45;9)&" "&GAUCHE(AW45;11))));30))


pour la ligne 5 elle devient :
=SI(NBCAR(GAUCHE(MAJUSCULE(SUPPRESPACE((GAUCHE(AU46;5)&" "&SI(NB.SI(AW46;"*Revêtement*");"";GAUCHE(AW46;3))&"  "&GAUCHE(BJ46;10)& " " &BU46&" "&SI(OU(NBCAR(BB46)=0; NBCAR(BB46)=1);"";GAUCHE(BB46; NBCAR(BB46)-2))& " " &GAUCHE(AZ46;9))));30))<30; GAUCHE(MAJUSCULE(SUPPRESPACE((GAUCHE(AU46;13)&" "&SI(NB.SI(AW46;"*Revêtement*");"";GAUCHE(AW46;3))& " " & GAUCHE(BJ46;10)& " " &SI(NB.SI(BF46;"*TRANSPAREN*");"";GAUCHE(BF46;3))&" "&SI(OU(NBCAR(BB46)=0; NBCAR(BB46)=1);"";GAUCHE(BB46; NBCAR(BB46)-2))& " " &GAUCHE(AZ46;9)&" "&SI(NB.SI(AW46;"*Revêtement*");"";GAUCHE(AW46;3)))));30);GAUCHE(MAJUSCULE(SUPPRESPACE((GAUCHE(AU46;5)&" "&SI(NB.SI(AW46;"*Revêtement*");"";GAUCHE(AW46;3))& " " & GAUCHE(BJ46;10)& " " &SI(NB.SI(BF46;"*TRANSPAREN*");"";GAUCHE(BF46;3))&" "&SI(OU(NBCAR(BB46)=0; NBCAR(BB46)=1);"";GAUCHE(BB46; NBCAR(BB46)-2))& " " &GAUCHE(AZ46;9)&" "&GAUCHE(AW46;11))));30))


etc...
0
lenovofe > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
4 juin 2015 à 13:45
Pardon j'ai fait une erreur de frappe. Pour que tout soit clair :

Ligne 3 :
=SI(NBCAR(GAUCHE(MAJUSCULE(SUPPRESPACE((GAUCHE(AU3;5)&" "&SI(NB.SI(AW3;"*Revêtement*");"";GAUCHE(AW3;3))&"  "&GAUCHE(BJ3;10)& " "&SI(NB.SI(BF3;"*TRANSPAREN*");"";GAUCHE(BF3;3))&" "&SI(OU(NBCAR(BB3)=0; NBCAR(BB3)=1);"";GAUCHE(BB3; NBCAR(BB3)-2))& " " &GAUCHE(AZ3;9))));30))<30;GAUCHE(MAJUSCULE(SUPPRESPACE((GAUCHE(AU3;13)&" "&SI(NB.SI(AW3;"*Revêtement*");"";GAUCHE(AW3;3))& " " & GAUCHE(BJ3;10)& " " &SI(NB.SI(BF3;"*TRANSPAREN*");"";GAUCHE(BF3;3))&" "&SI(OU(NBCAR(BB3)=0; NBCAR(BB3)=1);"";GAUCHE(BB3; NBCAR(BB3)-2))& " " &GAUCHE(AZ3;11)&" "&SI(NB.SI(AW3;"*Revêtement*");"";GAUCHE(AW3;3)))));30);GAUCHE(MAJUSCULE(SUPPRESPACE((GAUCHE(AU3;4)&" "&SI(NB.SI(AW3;"*Revêtement*");"";GAUCHE(AW3;3))& " " & GAUCHE(BJ3;10)& " " &SI(NB.SI(BF3;"*TRANSPAREN*");"";GAUCHE(BF3;3))&" "&SI(OU(NBCAR(BB3)=0; NBCAR(BB3)=1);"";GAUCHE(BB3; NBCAR(BB3)-2))& " " &GAUCHE(AZ3;9)&" "&GAUCHE(AW3;11))));30))


Ligne 4 :
=SI(NBCAR(GAUCHE(MAJUSCULE(SUPPRESPACE((GAUCHE(AU4;5)&" "&SI(NB.SI(AW4;"*Revêtement*");"";GAUCHE(AW4;3))&"  "&GAUCHE(BJ4;10)& " "&SI(NB.SI(BF4;"*TRANSPAREN*");"";GAUCHE(BF4;3))&" "&SI(OU(NBCAR(BB4)=0; NBCAR(BB4)=1);"";GAUCHE(BB4; NBCAR(BB4)-2))& " " &GAUCHE(AZ4;9))));30))<30;GAUCHE(MAJUSCULE(SUPPRESPACE((GAUCHE(AU4;13)&" "&SI(NB.SI(AW4;"*Revêtement*");"";GAUCHE(AW4;3))& " " & GAUCHE(BJ4;10)& " " &SI(NB.SI(BF4;"*TRANSPAREN*");"";GAUCHE(BF4;3))&" "&SI(OU(NBCAR(BB4)=0; NBCAR(BB4)=1);"";GAUCHE(BB4; NBCAR(BB4)-2))& " " &GAUCHE(AZ4;11)&" "&SI(NB.SI(AW4;"*Revêtement*");"";GAUCHE(AW4;3)))));30);GAUCHE(MAJUSCULE(SUPPRESPACE((GAUCHE(AU4;4)&" "&SI(NB.SI(AW4;"*Revêtement*");"";GAUCHE(AW4;3))& " " & GAUCHE(BJ4;10)& " " &SI(NB.SI(BF4;"*TRANSPAREN*");"";GAUCHE(BF4;3))&" "&SI(OU(NBCAR(BB4)=0; NBCAR(BB4)=1);"";GAUCHE(BB4; NBCAR(BB4)-2))& " " &GAUCHE(AZ4;9)&" "&GAUCHE(AW4;11))));30))


Etc, etc..
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744 > lenovofe
4 juin 2015 à 13:50
Ok.
Pour un résultat totalement adapté, qu'elle colonne contient ces formules?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
4 juin 2015 à 14:00
Jusqu'à qu'elle ligne étirer la formule?
0