Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Insérer une formule en VBA

luke3300

XLDnaute Impliqué
Bonjour à tous,

Je coince sur un problème d'insertion/de recopie de formule ...

J'aimerais insérer via une macro la formule suivante en cellule I8 de mon classeur:

=SI($E8="X","","1")

Et faire étirer ou coller la formule jusqu'à la dernière ligne du classeur contenant des valeurs en colonne B.

Par exemple si la dernière cellule de la colonne B contenant des valeurs est la B46859, j'aimerais que la formule soit copiée de I8 à I46859.

J'ai fais un petit fichier que je joints pour essayer de mieux visualiser le hic.

Très bon dimanche à tous
 

Pièces jointes

  • Test2.xlsm
    1.4 MB · Affichages: 14

sousou

XLDnaute Barbatruc
Bonjour,luke & m12
Tu ne nous dis pas à quelle moment tu veux que cette opération se passe
Dans le fichier de m12 Lorsque tu mets un x sur la colonne e la formule va s'insèrer, sur la ligne courante est-ce bien cela?
 

luke3300

XLDnaute Impliqué
Bonjour sousou, M12, le forum,

Disons que ce code sera activé via un bouton car il y a d'autres traitements que je fais avant et d'autres encore après

Merci à vous, je vais tester la solution de M12 et reviens vers vous.

Bon dimanche
 

luke3300

XLDnaute Impliqué
Re M12,

Est-il possible que cela se lance sans enlever la X de E8?
Quand j'ouvre le fichier et que j'ajoute quelques X dans la colonne E pour tester, ça ne bouge pas quand je clic sur le bouton. Par contre si j'enlève le X de E8 et que je clic, alors oui ça marche mais la formule collée ne tient pas compte des données dans la colonne E alors que s'il y a un X dans une cellule, la cellule correspondante en I ne devrait rien afficher ... regarde ...
 

Pièces jointes

  • 2019-02-17_11-34-42.jpg
    189.1 KB · Affichages: 15

M12

XLDnaute Accro
Re,

Gros malin, Moi, je te fais une macro suivant ce que tu demandes, si tu expliquais plus clairement, cela irais plus vite
 

sousou

XLDnaute Barbatruc
bonjour
Tu lances ce code avec un bouton auquel du affecte la macro test, et toutes tes lignes seront affectées
Je n'i pas suivi votre conversation alors regarde si ça te convient


'calcule la dernière ligne de la base
Function dernièrelg(feuille, col)
With Sheets(feuille)
'MsgBox .UsedRange.Rows.Count
Set k = .Cells(.UsedRange.Columns(col).Rows.Count + 1, col).End(xlUp)
If k <> "" Then dernièrelg = k.Row + 1 Else dernièrelg = 1
End With
End Function
Sub test()
With Sheets("all")
drl = dernièrelg(ThisWorkbook.Sheets(1).Name, 2)
Set zone = .Range(.Cells(8, 9), .Cells(drl, 9))
zone.Select
zone.Formula = "=IF(RC5=""X"","""",""1"")"
End With
End Sub
 

luke3300

XLDnaute Impliqué
Re,
Cela ne m'en dis pas plus

EXPLIQUE clairement ce que tu veux
Re M12,

Je suis désolé de ne pas être clair je fais mon possible pour essayer d'expliquer au mieux mais pas toujours facile. J'aimerais simplement que les formules qui se colle en colonne I jusqu'à hauteur de la dernière ligne qui contient une valeur dans la colonne B fonctionne. Tu vois ? Ici en fait tout se colle mais qu'il y ait une donnée ou non en colonne E ça ne change rien. Hors comme la formule le veut, s'il y a un X en colonne E, la cellule correspondante de la colonne I devrait rester vide. Si par contre il n'y a rien, en colonne I ça devrait indiquer 1.
Merci beaucoup.
 

Discussions similaires

Réponses
10
Affichages
223
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…