Transformer une formule Excel en code VBA " "

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

,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 !

bonjour,

la syntaxe vba n'est pas correcte

Range("I2:I").Select

il manque un numéro de ligne après le deuxième I), que veux-tu faire ?

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
,1,1))&"-"&RIGHT([@ID],3)&"-"&TEXT(E2:E,"jjmmaaa-hhmm"))

il faut mettre la formule entre ", et dédoubler tous les " qui se trouvent dans la formule.

que veux-tu faire avec C2:C ? ou E2:E ? (E2:E) n'est pas une syntaxe correcte pour identifier une plage au format R1C1. C2:C est la plage de colonnes de la colonne B à la colonne dans laquelle se trouve la formule.

bien que n'ayant pas tout compris, je pense que ta formule devrait ressembler à ceci. Remplace le I4 par la plage dans laquelle tu veux la formule.

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""))"

bonjour et merci pour la réponse.(un peu plus construite que elles que j'ai eues auparavant sur d'autres forums)

bien: je débute dans le tableau en ligne 2 ( i2, c2 e2 a2 d2 ...). mon idée avec c2:c, e2:e etc... est de designer les colonnes pour la suite des calculs ... d'apres ce que je comprends ce n'est pas bon...

"I" est la colonne ou va se trouver le résultat du code pour les liens a suivre a chaque enregistrement de rdv
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 4 chiffres hhmm.faisant ainsi un code unique qui donnes des info immédiatement visible.

Autant sur la feuil3 du dossier la formule s'affiche, autant je n'arrive pas a la créer depuis le formulaire de prise de rdv.

13prise-de-rdv.xlsm (200.52 Ko)

bonjour,

Désolé pour la peu de construction de la réponse

je te propose une procédure pour générer ton n° de facture.

Private Sub format_Fact()
    Dim tiret As Long
    tiret = InStr(Me.TextBoxNom, "-")
    Me.LabelID_Fact = UCase(IIf(tiret > 0, Left(Me.TextBoxNom, 1) & Mid(Me.TextBoxNom, tiret + 1, 1), Left(Me.TextBoxNom, 2)) & Left(Me.TextBoxPrenom, 1)) & "-" & Right(Me.LabelIdent.Caption, 3) & Format(Me.TextBox_DateRDV, "ddmmyyyy-hhmm")
End Sub

Reste à l'intégrer dans ton module de gestion de ton formulaire. Mon aide sur le sujet s'arrête ici, à moins qu'il n'y ait un problème avec la procédure fournie.

Rechercher des sujets similaires à "transformer formule code vba"