Choisir cellule cible en VBA et insérer une formule

Re-bonjour à tous,

J'ai créé un bouton ActiveX permettant d'ajouter une ligne à la fin d'un tableau. Dans cette nouvelle ligne, j'aimerais placer une formule dans la première cellule (colonne A), et écrire <Nouveau> dans la deuxième (colonne B).

A la base, je voulais faire autre chose donc j'avais un code me permettant d'écrire <Nouveau> dans la 1ère cellule.

Voilà mon code actuel :

Private Sub CommandButton1_Click()
'se positionner sur la première ligne vide
Worksheets("Fournisseurs").Range("A1").End(xlDown).Offset(1, 0).Select
'insertion nouvelle ligne, le bouton descend
Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
'inscription dans la première cellule de la nouvelle ligne
ActiveCell.FormulaR1C1 = "<Nouveau>"
End Sub

Et la formule Excel telle qu'elle se trouve en cellule A2 (pour cette partie c'est surtout la façon d'écrire la formule en VBA qu'il faudrait que je connaisse) :

=SI(ESTVIDE(B2);"";MAJUSCULE(GAUCHE(B2;3))&"-"&SOMMEPROD(N(GAUCHE($A$1:A1;3)=GAUCHE(B2;3)))+1)

Est-il possible d'adapter ce code pour obtenir ce que je veux ? Sinon je suis preneur de toute autre méthode .

Merci d'avance !

Bonjour,

En vba les fonctions sont à mettre en anglais, avec la "," en séparateur de paramètres.

Le plus simple est de valider la formule sur ta feuille avec l'enregistreur de macro lancé, pour traduire en anglais. Puis de ne pas te perdre dans les doubles quotes "" et la notation L1C1.

Sinon, comme ta formule est présente sur la feuille, le plus simple est de copier la cellule :

[A2].Copy [A4]

eric

edit: j'avais inversé A2 (qui contient la formule) et A4. Corrigé

Re

Bien que je trouve inutile un code dans le cas de ton fichier (posté sur un message précédent) puisque tu as juste à faire une tabulation pour que la ligne soit créée, voici ton code

Private Sub CommandButton1_Click()
'se positionner sur la première ligne vide
Worksheets("Fournisseurs").Range("A1").End(xlDown).Offset(1, 0).Select
'insertion nouvelle ligne, le bouton descend
Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
With ActiveCell
'inscription en B dans la première cellule de la nouvelle ligne
.Offset(0, 1) = "<Nouveau>"
'formule en A dans la première cellule de la nouvelle ligne
.FormulaR1C1 = "=IF(ISBLANK(RC[1]),"""",UPPER(LEFT(RC[1],3))&""-""&SUMPRODUCT(N(LEFT(R1C1:R[-1]C,3)=LEFT(RC[1],3)))+1)"
End With
End Sub

Amicalement

Nad

Encore une fois merci beaucoup Nad, toujours rapide et efficace ! Tout fonctionne exactement comme je voulais

Eriiic ta formule n'aurait fonctionné que pour A4, ou bien cela aurait continué sur toute la colonne A tant que j'en avais besoin ?

Tiens, je ne vois pas ma réponse, j'ai dû rater qq chose...

Si tu fais un .copy d'une formule les références absolues et relatives sont correctes dans la cellule destination.

Et si emmener les formats t'embête, il faut le faire sur 2 lignes, avec un 'collage spécial formules' dans la 2nde.

eric

Rechercher des sujets similaires à "choisir cible vba inserer formule"