OVH Cloud OVH Cloud

Généreren automatique une formule MIN sur une plage dynamique.

1 réponse
Avatar
Rayzo
Bonjour,

Je rencontre un problème.
Mon programme créé des onglets afin de récupérer des données puis les colles dans cet onglet. En fonction des données les plages changent.
Je n'arrive pas a appliquer une formule MIN sur la ligne. Je ne peux pas cité une plage fixe car lors de la création de mon onglet puis le collage de mes données celle ci peuvent changer.

En gros au lieu d'avoir MIN("e;e;BC6"e;e;:"e;e;CQ6"e;e;) j'aiemrais avoir une ou deux variable qui me gere la plage en automatique.

3 partie sont présente:
1- les données récupérer dans l'exemple de la colonne 1 a 53
2-Mes formules générés de 55 a 95
3-la colonne mini en 97 que je souhaite en dynamique;


Exemples:
Pour le min de la ligne 6 j'aimerais =MIN(BC6;CQ6) mais avec 2 variable créé qui me retourne cette plage. =Min(cell1:cell2)

Pour la ligne suivante =MIN(BC7;CQ7) idem pour la plage.
=Min(cell1:cell2)

Etant dans un contexte de travail pro je ne peux malheureusement pas vous fournir le fichier source avec toute les macro créés.

En ayant réfléhis, je pense à:
Range(Cells(6, NbcolMG1 + 1), Cells(6, NbcolMG)).Select
Cela me sélectionné bien la plage met comment incrémenter pour qu'il passe a la ligne suivante en modifiant la plage aussi. boucle for? donc 2 boucle? ( incrémenter ma plage)

Je ne sais pas si je me suis bien fais comprendre...


Je vous remercie de votre aide.


Cordialement


PJ:
http://cjoint.com/?EDdrcgX4JLa

1 réponse

Avatar
MichD
Bonjour,

Essaie ceci :

'-------------------------------------------------------------------------
Sub test()
Dim Rg As Range, Rg1 As Range, DerLig As Long
Dim A As Long, B As Long

With Worksheets("Feuil1") 'Nom feuille à adapter
'Trouve la dernière cellule dans chacune des colonnes
A = .Range("BC" & .Rows.Count).End(xlUp).Row
B = .Range("CQ" & .Rows.Count).End(xlUp).Row
DerLig = Application.Max(A, B)

'J'ai supposé que la ligne débutait en 7, tu peux choisir
'le numéro de la ligne de ton choix
Set Rg = .Range("BC7:BC" & DerLig)
Set Rg1 = .Range("CQ7:CQ" & DerLig)

'Dans la colonne A, adapte la lettre de la
'colonne qui te convient
With .Range("A7:A" & DerLig)
'La formule s'inscrit dans chacune des
'cellules de cette colonne
.Formula = "=Min(" & Rg(1).Address(0, 0) & _
":" & Rg1(1).Address(0, 0) & ")"
End With
End With
End Sub
'-------------------------------------------------------------------------