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

Phil69970

XLDnaute Barbatruc
Re

Plusieurs remarques (Pas forcément dans l’ordre) :

1)Tu as de la chance Hervé de n'avoir seulement que 2 solutions sans retour o_O
Par contre , ici ces dernières semaines ( depuis octobre) j'ai 2 "post" résolu fichier clé en main sans réponse ??

2)Eric si j'ai insisté sur le code facture c'est que pour moi c'est un "langage inconnu" je parle en numéro de facture mais pas en code facture de plus pour moi le système tel que décrit par toi au post #14 n'est pas viable.
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 .
D'ailleurs tu t'en ai rendu compte au post #20 en rajoutant la date et l'heure
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
Perso je n'ai jamais vu de numéro de facture avec l'heure qui fait partie du numéro de facture.
Je pense que tu fais largement trop compliqué surtout pour 4 factures par jour mais c'est ton choix.

Je maintiens ma remarque :
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

3)Sur la pratique du cross posting
ok compris donc si je dois poser une question je ne peu le faire que sur une seule plateforme ? ok mais je trouve cela un peu limitatif en terme de recherche de possibilités non ?

Pourtant l'explication de @David Aubert est très claire
Bonjour guellila, bonjour Bruno,
Effectivement, comme Bruno vous le signale, le cross posting (poser la même question sur des forums différents) est une pratique mal perçue sur le net car les contributeurs des forums vont potentiellement passer du temps sur votre demande pour rien... car vous aurez peut être déjà eu une réponse pertinente par ailleurs.
Merci de supprimer une de vos demandes sur un des 2 forums.
À vous de choisir 😉
Bonne journée
David

Vu du demandeur c'est plus facile de poster tout azimut en attendant une "solution toute zone" MAIS vu de ceux qui cherchent des réponses c'est clairement se moquer d'eux.

Dans 9 fois sur 10 le demandeur ne viendra pas dire arrêter de chercher j'ai trouvé sur tel site cette réponse.

Je préfère clairement la solution "mono forum" pour sa question car il ne fait pas perdre du "temps de cerveau disponible" ;)aux personnes qui prennent le temps de chercher et répondre à la question du demandeur.

4)Bien sur que le VBA permet l'écriture en A1, je plussoie Marcel.
Pas forcément : VBA peut aussi utiliser l'adressage A1.

5)La remarque d'Hervé est pertinente ....
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 lecture

@Phil69970
 

Discussions similaires