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

Inserer formules par macro

  • Initiateur de la discussion Initiateur de la discussion JORDAN
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

JORDAN

XLDnaute Impliqué
Boujour tout le monde, le Forum,

Je ne sais pas comment insérer automatiquement les formules suivantes
A savoir que la plage de données varie selon l'emplacement
et que la liste peut être très longue

Je pense que c'est plus clair avec le fichier

Merci pour votre aide
et bonne fin de journée

Code:
=GRANDE.VALEUR($C$3:$C$11;1)
=GRANDE.VALEUR($C$3:$C$11;2)
=GRANDE.VALEUR($C$3:$C$11;3)
=GRANDE.VALEUR($C$3:$C$11;4)
=GRANDE.VALEUR($C$3:$C$11;5)
=GRANDE.VALEUR($C$3:$C$11;6)
=GRANDE.VALEUR($C$3:$C$11;7)
=GRANDE.VALEUR($C$3:$C$11;8)
=GRANDE.VALEUR($C$3:$C$11;9)
 

Pièces jointes

Re : Inserer formules par macro

Bonsoir,

regarde le fichier joint...

Le code :

Code:
Sub Formules()
Dim Plg As Range
Dim LigDep As Long, LigArr As Long
Dim I As Integer, Nb As Integer
Dim J As Byte, Nb2 As Byte
Set Plg = Columns("C:C").SpecialCells(xlCellTypeBlanks)
x = Plg.Areas.Count
For I = 1 To x
    Nb = Plg.Areas.Item(I).Count
    LigDep = Plg.Areas.Item(I).Offset(Nb, 0).Resize(1, 1).Row
    LigArr = Cells(LigDep, 3).End(xlDown).Row
    Nb2 = LigArr - LigDep
    For J = 0 To Nb2
        Cells(LigDep + J, 4).FormulaR1C1 = "=LARGE(R" & LigDep & "C3:R" & LigArr & "C3," & J + 1 & ")"
    Next J
Next I
Range("E3").FormulaR1C1 = "=IF(RC[-1]>6,""OK"","""")"
Range("E3").AutoFill Destination:=Range("E3:E" & [A65000].End(xlUp).Row), Type:=xlFillDefault
Plg.Offset(0, 2).Clear
End Sub

le fichier :
 

Pièces jointes

Re : Inserer formules par macro

Bonsoir Jordan et bhbh,

Dans le fichier joint une autre solution par boucle :

Afin de réaliser des "Step" égaux, j'ai légèrement modifié la disposition des données d'origine.

Cordialement

Bernard
 

Pièces jointes

Re : Inserer formules par macro

Bonsoir bhbh,

Merci pour ton excellent travail, c'est exactement ce que je n'arrivai pas à faire
je n'ai plus qu'à décortiquer ton code pour bien le comprendre

Encore merci et bonne soirée
 
Re : Inserer formules par macro

Bonsoir CBernardT,

Merci pour ta solution, plus simple niveau macro
mais elle oblige a retoucher les données pour le "Step 11"
si il y a 10000 lignes ou plus de données, ça devient long

Par contre, à quoi correspond "Large", j'ai essayé de voir dans l'aide mais il n y a rien ??

Merci pour ton aide
 
Re : Inserer formules par macro

Re-,

mets-toi dans la cellule E3...

Démarre l'enregistreur de macro

Entre dans la formule (dans la barre des formules), et Entrée..

Stoppe l'enregistreur de macro...

Et regarde ce qu'il a enregistré....
 
Re : Inserer formules par macro

Bonjour,

Tu as également dans le répertoire d'installation d'office (...\Office11 ou ...\Office12) un sous-répertoire \1036 avec le fichier vbalist.xls.
Dans l'onglet 'Fonctions de feuille de calcul' de ce classeur tu as la traduction des fonctions pour retrouver le sens anglais-français (l'enregistrement de macro étant plus simple pour l'autre sens).
eric
 
Re : Inserer formules par macro

Bonjour tout le monde,

Merci eriiiic pour cette info, je connais ce fichier mais je pense pas souvent à aller voir dedans.

Je reviens avec encore un problème

D'après le code de bhbh, j'ai essayé d'adapter pour insérer une autre formule
évidement ça beug
je cherche à trouver le nombre de cellule non vide pour chaque area de la colonne "E"
Au début, j'ai testé avec la colonne "C" et tout va bien
Ensuite j'ai remplacé "C" par "E" dans le code et là ça beug

Je n'ai pas bien compris la partie de code suivante :
Code:
Nb = Plg.Areas.Item(I).Count
LigDep = Plg.Areas.Item(I).Offset(Nb, 0).Resize(1, 1).Row
Pourquoi quelques rares fois Nb=2
Area donne bien le nombre de collections utilisées ???
si c'est bien ça, pourquoi 2 collections ???

Merci pour votre aide
 

Pièces jointes

Re : Inserer formules par macro

Bonjour,

dans la colonne C, dans les cellules vides, parfois la zone comprend 2 lignes, parfois 1..

D'où le calcule du nombre de cellules vides dans chaque zone

Par exemple, 1 ère zone de cellules vides : C1:C2 (2 lignes), puis C12:C13 (également 2), puis C23 (1 seule ligne).....

Comme je prends en référence les cellules vides de la colonne C, je ne pense pas que ce soit une bonne idée de la remplacer par la colonne E (du moins, si tu n'y est pas obligé....)

Que cherches-tu à faire, exactement?
 
Re : Inserer formules par macro

Bonjour bhbh
Merci pour tes explications, je comprends mieux maintenant

En fait je recherche le nombre de OK pour chaque "area"

merci

ps :
je ne comprends pas trop le resize dans :
LigDep = Plg.Areas.Item(I).Offset(Nb, 0).Resize(1, 1).Row
merci
 
Dernière édition:
Re : Inserer formules par macro

Re-

Code:
LigDep = Plg.Areas.Item(I).Offset(Nb, 0).Resize(1, 1).Row

Et entre parenthèse, lorsque tu colles du code, pense à utiliser la balise Code, qui ressemble à # au dessus du texte....
Puis colle ton code au mileu, c'est beaucoup plus clair dans le fil, et ça permet des copier-coller direct...

Bref, comme je te le disais, certaines zones vides ont 2 lignes, d'autres 1..

Donc Item(i) peut avoir 2 lignes, comme 1

Si on sélectionne avec l'offset, on peut avoir deux cellules de sélectionnées.

En le "Resizant" du verbe "Resizer" 😀 , à 1 cellule d'une hauteur de 1 ligne, 1 colonne, on ne sélectionne qu'une....

Resize(nbligne, nb colonne)
Regarde dans l'aide (Clique au milieu, puis F1)

Bon courage
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

A
Réponses
0
Affichages
924
ajless
A
D
Réponses
33
Affichages
5 K
D
A
Réponses
0
Affichages
903
Alex le VERY novice
A
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…