Insérer une fonction CONCATENER par VBA

Bonjour à tous, je vous joint le fichier pour visualiser.

Je coince sur la chose suivante :

L'utilisateur dispose d'un Formulaire pour saisir les données demandées puis click pour ajouter ces données dans une base de données (tableau).

Une fois les données rangées dans la BDD (tableau), il faut que sur la première range du tableau, le code client se créer automatiquement grâce à la fonction CONCATAINER.

Je sais la rédiger sous forme de fonction, mais dès que j'essaie de la passer en VBA, rien ne va.

Voici la ligne de code problématique :

ActiveCell.Offset(0, -2).FormulaLocal = "=CONCATENER(MAJUSCULE(GAUCHE([@[Client  ]];2));GAUCHE([@[Code Postal  ]];2);MAJUSCULE(GAUCHE([@[Ville  ]];2));" / ";MAJUSCULE(GAUCHE([@[Société  ]];2)))"

Je me suis pourtant inspiré de plusieurs topic existant mais je n'arrive pas à adapter le code :

formula (rédigé en anglais)

formulaLocal (rédigé en français)

Utilisation des "&" au lieu de concatener (mais cela m'insère l'entièreté de la valeur cellule et non les deux premier caractères.)

etc.

Vous trouverez tous mes essais dans le code du formulaire "frmAjout"

PS : l'option de mettre la formule dans le tableau ne convient pas car il y a 2 façons (chemins) d'alimenter ce tableau et la formule n'est pas compatible pour le deuxième chemin.

Si vous pouviez me mettre sur le droit chemin, je vous serais fort reconnaissant.

En vous remerciant,

Dan, si tu passe par là, encore une fois je te remercie.

Alex.

Utilisation des "&" au lieu de concatener (mais cela m'insère l'entièreté de la valeur cellule et non les deux premier caractères.)

etc.

left("la valeur de ta cellule", 2) -> retourner les deux premiers caractères d'une chaine Donc là retourne "la". (existe aussi en right)

Bonjour vince1512,

Quelle réactivité !!!!

Super, je test cette méthode et reviens vers toi dès que possible.

PS : Puis-je mettre, dans ce schéma, comme valeur de cellule des noms qui se rapportent au tableau ?

Ex : @société

Merci.

re,

un exemple :

ActiveCell.Offset(0, -2).Value = Left(frmAjout.cboclient, 2) & Left(frmAjout.cboclient, 2) & Left(frmAjout.cboclient, 2) & "-" & Left(frmAjout.cboclient, 2)

Celui ci ressemble à la structure de ton exemple, les 2 premiers caractères de 3 des champs puis un "-" et les 2 premières caractères du dernier champs. Si tu souhaites rajouter une valeur fixe comme "@société" :

 ActiveCell.Offset(0, -2).Value = Left(frmAjout.cboclient, 2) & Left(frmAjout.cboclient, 2) & "@société" & Left(frmAjout.cboclient, 2) & "-" & Left(frmAjout.cboclient, 2)

Re,

Juste parfait !

Voici la ligne modifiée qui fonctionne très bien :

ActiveCell.Offset(0, -2).FormulaR1C1 = (UCase(Left(ActiveCell.Offset(0, 2), 2))) & Left(ActiveCell.Offset(0, 5), 2) & (UCase(Left(ActiveCell.Offset(0, 4), 2))) & "-" & (UCase(Left(ActiveCell.Offset(0, 3), 2)))

PS : La référence à la colonne tableau "@société" ne sert plus à rien car la recherche est ordonnée grâce à "ActiveCell".

PS 2 : au lieu de mettre "formula.value =" j'ai utilisé ".formulaR1C1 =".

Quelle différence cela engendre ?

Merci encore pour le partage de tes compétences et pour ta réactivité.

Cordialement,

Alex.

Je ne connais pas bien c'est deux fonctions (je n’utilise pas les formules) mais j'ai l’impression que dans les grandes lignes elles sont identiques

Rechercher des sujets similaires à "inserer fonction concatener vba"