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

TooFatBoy

XLDnaute Barbatruc
Ça donnerait ça :
Code:
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""))"
En tout cas, c'est à tester. 😉


Mais, comme l'a dit Hervé, il est toujours préférable de fournir un petit bout de fichier.
 
Dernière édition:

eric66430

XLDnaute Nouveau
voici le fichier en question
dans la "base rdv" le "num fact" doit s'afficher de façon automatique via le formulaire.
A partir de la un autre formulaire sera creer pour entrer les infos necessaires.
L'idee sera aussi de lister plus tard le nombre de rdv avec les num fact avec lien par client ou d'ouvrir un dossier specifique evec les infos et les factures.
 

Pièces jointes

  • Prise de RDV.xlsm
    200.5 KB · Affichages: 10
Dernière édition:

eric66430

XLDnaute Nouveau
ok, j'enlève donc la sélection de la cellule "I"
mais pourquoi le choix de la colonne D en sélectionnant D2:D a t il moins de sens que les sélections C2:C ?

Private Sub LabelID_Fact_Click()

Feuil3.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

c'est une formule qui marche traduite d'Excell par "? ActiveCell.Formula" en vba ...
suis pas très doué en vba, suis plutôt bricoleur lol, j'ai donc besoin de temps en temps qu'on m'explique un peu en excusant mon manque de savoir ;)
Merci :)
 

TooFatBoy

XLDnaute Barbatruc
mais pourquoi le choix de la colonne D en sélectionnant D2:D a t il moins de sens que les sélections C2:C ?
Pour moi ça n'a doublement aucun sens, car d'une part je ne sais pas ce que représente 'D2' et d'autre part je ne sais pas non plus ce que représente (D) mais toi tu dois savoir, je suppose. ;)

{edit][
Au temps pour moi pour "i2:i", la syntaxe doit en réalité être correcte.
Je crois que j'ai compris : c'est une syntaxe que je ne connais pas mais qui, je suppose, doit en fait vouloir dire "toute la colonne i à partir de la deuxième ligne".
Bref, tu l'as compris : j'y pige pas plus que toit et donc ne saurais t'aider. Désolé. :(
PS : je vois qu'il n'y a plus les apostrophe autour de D2. C'est déjà mieux. ;)
[/edit]
 
Dernière édition:

eric66430

XLDnaute Nouveau
Pour moi ça n'a doublement aucun sens, car d'une part je ne sais pas ce que représente 'D2' et d'autre part je ne sais pas non plus ce que représente (D) mais toi tu dois savoir, je suppose. ;)
le fichier est téléchargeable plus haut : D2 est la 2eme ligne de la colonne D sur la feuil3.
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 ... un peu plus d'humilité pour le débutant que je suis serait un peu plus agréable svp
 

Discussions similaires

Statistiques des forums

Discussions
314 653
Messages
2 111 591
Membres
111 208
dernier inscrit
estalavista