Microsoft 365 Transformer une formule excel en code vba

eric66430

XLDnaute Nouveau
Bonjour,

J'ai une formule a modifier qui, une fois transformée via"? ActiveCell.Formula " me met un code erreur a la mise en place:

formule Excel : =MAJUSCULE((SI(ESTNUM(TROUVE("-";C4));STXT(C4;1;1)&STXT(C4;TROUVE("-";C4)+1;1);STXT(C4;1;2))&STXT(D4;1;1))&"-"&DROITE([@ID];3)&"-"&TEXTE(E4;"jjmmaaa-hhmm"))

code vba:

Private Sub LabelID_Fact_Click()
Feuil3.Select
Range("I2:I").Select
ActiveCell.FormulaR1C1 = UPPER((IF(ISNUMBER(FIND("-",C2:C)),MID(C2:C,1,1)&MID(C2:C,FIND("-",C2:C)+1,1),MID(C2:C,1,2))&MID(D2:D,1,1))&"-"&RIGHT([@ID],3)&"-"&TEXT(E2:E,"jjmmaaa-hhmm"))
End Sub

Ici le "IF" me met un code erreur "erreur de compilation" et "attendu expression"

Un truc que je pige pas, merci pour votre aide !
 
Solution
Bon pour conclure
Eric a voulu transposer une formule en VBA !!! aie ! pas évident
Donc il ne savait pas que dans ce cas ce n'est plus de l'adressage A1 , C2 ...etc mais en RC ( Row Col)
et que donc dans ce cas Vba agit par "offset" de la cellule en cours ; ex : si formule en D3 qui fait appel à C2
le Vba avec FormulaR1C1 donnera ="R[-1]C[-1] ....." donc très peu pour moi
Mieux vaut abandonner la formule et partir sur une résolution VBA totale
Info : Si fichier utilisé par plusieurs, attention aux formules si cel. non protégées !! un zig a vite fait d'écrire dedans donc d'effacer et en + Sauvegarde !!! le VBA évite tout ça

Bonne continuation

eric66430

XLDnaute Nouveau
j'ai eu ma reponse meme si je fais des erreurs j'ai eu aussi des explications:
Range("I4").FormulaR1C1 = "=UPPER((IF(ISNUMBER(FIND(""-"",RC3)),MID(RC3,1,1)&MID(RC3,FIND(""-"",RC3)+1,1),MID(RC3,1,2))&MID(RC4,1,1))&""-""&RIGHT([@ID],3)&""-""&TEXT(RC5,""jjmmaaa-hhmm""))"
 

Phil69970

XLDnaute Barbatruc
Bonjour à tous

l'objectif est de créer un code facture a partir des 2 premières lettres du nom, de la première lettre du prénom, du mois de naissance et des 3 derniers chiffres de l'année de naissance et des 3 dernier chiffres du code client ...
Donc si j'ai tout compris pour le 1er nom de la base client cela devrait donner ceci:

LA ==> 2 premières lettres du nom
G ==> de la première lettre du prénom
09==> du mois de naissance
962 ==> des 3 derniers chiffres de l'année de naissance
003 ==> des 3 derniers chiffres du code client
Ce qui devrait donner LAG-09-962-003

Question :
C'est quoi un code facture ?

Si c'est pour avoir un numéro de facture je te suggère plutôt cela:
Année de la facture ==> 2021
Mois de la facture ==> 12
N° d'ordre ==> 001 puis 002 etc

Avantage tes factures sont toujours dans l'ordre et se retrouve plus facilement

@Phil69970
 

Phil69970

XLDnaute Barbatruc
Re

Je pense que je n'aurais jamais la réponse à ma question:mad:

Question :
C'est quoi un code facture ?

De plus faire du cross posting n'est pas permis par la charte du site.
Voila ce qu’en pense l'administrateur de ce site de cette pratique

@Phil69970
 

eric66430

XLDnaute Nouveau
Bonjour à tous


Donc si j'ai tout compris pour le 1er nom de la base client cela devrait donner ceci:

LA ==> 2 premières lettres du nom
G ==> de la première lettre du prénom
09==> du mois de naissance
962 ==> des 3 derniers chiffres de l'année de naissance
003 ==> des 3 derniers chiffres du code client
Ce qui devrait donner LAG-09-962-003

Question :
C'est quoi un code facture ?

Si c'est pour avoir un numéro de facture je te suggère plutôt cela:
Année de la facture ==> 2021
Mois de la facture ==> 12
N° d'ordre ==> 001 puis 002 etc

Avantage tes factures sont toujours dans l'ordre et se retrouve plus facilement

@Phil69970
c'est juste, le truc c'est qu'avec 4 clients jours je risque ainsi d'avoir des doublons en code factures. a la place dur dernier code a 3 chiffre heure et mm . ça me donne ça: LEL-004-14032022-1000
LE; 2 1ere lettres du nom
L : 1ere lettre du prénom
004 : numéro base client
14032022 : date rdv
1000 : heure rdv
Re

Je pense que je n'aurais jamais la réponse à ma question:mad:



De plus faire du cross posting n'est pas permis par la charte du site.
Voila ce qu’en pense l'administrateur de ce site de cette pratique

@Phil69970
j'avais repondu
 

eric66430

XLDnaute Nouveau
Re

Je pense que je n'aurais jamais la réponse à ma question:mad:



De plus faire du cross posting n'est pas permis par la charte du site.
Voila ce qu’en pense l'administrateur de ce site de cette pratique

@Phil69970
"De plus faire du cross posting n'est pas permis par la charte du site.
Voila ce qu’en pense l'administrateur de ce site de cette pratique"

je ne pense pas l'avoir fait ici outre le fait que j'ai posté une question similaire sur une autre plateforme (Excel pratique) pour pouvoir avoir plus de chances de réponses ou rapidement en fonction des personnes qui s'y trouvent. Dsl si cela a posé problème
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous ; @Phil69970 ; @Marcel32
Loin d'être spécialiste des formules ... mais quand j'ai vu toutes les erreurs basiques !! MARCEL les a bien détectées et fait remarquer, j'ai fait Pause !! en attendant
Pour terminer , en plus de 20ans ici ( avant le gros crash de ce forum) je n'ai pratiquement JAMAIS vu un post se terminer sans solution , les réactions sont nombreuses et rapides > ce qui n'existe nullement sur les autres forums Excel !!! ( j'y étais aussi )
Par contre , ici ces dernières semaines ( depuis octobre) j'ai 2 "post" résolu fichier clé en main sans réponse ??
Alors peut être ( moi je dis) du Post All Over ? et celà ne fait pas plaisir , rien que par politesse et respect du temps passé
En plus si les Gros experts Barbatruc ne se sont pas manifestés c'est qu'il y avait un bléme dans ta description du départ
@eric66430 : voilà donc quelques remarques utiles pour la continuité sur notre forum
 

eric66430

XLDnaute Nouveau
Bonjour à tous ; @Phil69970 ; @Marcel32
Loin d'être spécialiste des formules ... mais quand j'ai vu toutes les erreurs basiques !! MARCEL les a bien détectées et fait remarquer, j'ai fait Pause !! en attendant
Pour terminer , en plus de 20ans ici ( avant le gros crash de ce forum) je n'ai pratiquement JAMAIS vu un post se terminer sans solution , les réactions sont nombreuses et rapides > ce qui n'existe nullement sur les autres forums Excel !!! ( j'y étais aussi )
Par contre , ici ces dernières semaines ( depuis octobre) j'ai 2 "post" résolu fichier clé en main sans réponse ??
Alors peut être ( moi je dis) du Post All Over ? et celà ne fait pas plaisir , rien que par politesse et respect du temps passé
En plus si les Gros experts Barbatruc ne se sont pas manifestés c'est qu'il y avait un bléme dans ta description du départ
@eric66430 : voilà donc quelques remarques utiles pour la continuité sur notre forum
Bonsoir, j'entends bien les remarques et j'en tiendrais compte, un grand merci pour le temps passé. A la base je voulais juste comprendre une erreur sur une transformation de formule ...
j'apprends péniblement et doucement le vba pour me faire plaisir de me faire un outil pour mon activité.
Je suis très loin d'en avoir fini ... Il est évident que j'ai de la reconnaissance pour le travail fourni par ceux qui ont passer du temps pour m'aider , cela va de soit. Ceci dit parfois les réponses sont faite pour des personnes qui ont une certaine maitrise et donc si je me tire ce qui me reste de cheveux pour comprendre les réponses je m'excuse pour mes réponses qui semble un peu caverneuses ...
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bon pour conclure
Eric a voulu transposer une formule en VBA !!! aie ! pas évident
Donc il ne savait pas que dans ce cas ce n'est plus de l'adressage A1 , C2 ...etc mais en RC ( Row Col)
et que donc dans ce cas Vba agit par "offset" de la cellule en cours ; ex : si formule en D3 qui fait appel à C2
le Vba avec FormulaR1C1 donnera ="R[-1]C[-1] ....." donc très peu pour moi
Mieux vaut abandonner la formule et partir sur une résolution VBA totale
Info : Si fichier utilisé par plusieurs, attention aux formules si cel. non protégées !! un zig a vite fait d'écrire dedans donc d'effacer et en + Sauvegarde !!! le VBA évite tout ça

Bonne continuation
 

Discussions similaires