Formule matricielle ou macro

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 !

ntan-évindi

XLDnaute Occasionnel
Bonjour à toutes et à tous,

J’ai lu à plusieurs reprises que les formules matricielles étaient gourmandes en ressource.
Dans un tableau je récupère pour 15 colonnes la dernière valeur j’ai donc 15 fois cette formule matricielle :

Code:
{=SI(ESTERREUR(INDEX(C6:C351;MAX(LIGNE(C6:C351)*NON(ESTVIDE(C6:C351)))-LIGNE(C6:C351)+1));0;INDEX(C6:C351;MAX(LIGNE(C6:C351)*NON(ESTVIDE(C6:C351)))-LIGNE(C6:C351)+1))}

Alors j’essaye de le faire par une macro, j’ai commencé ceci :

Code:
Sub RecupLigne()

Range("A20").End(xlUp).Offset(1, 0).Select
    Selection.Copy
    Range("A21:F21").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False

End Sub

Mais cela ne fonctionne pas. Ce n’est pas pour m’étonner, je n’y connais rien.
Quelqu’un peut il me mettre sur la voie.
D’avance merci.
Cordialement.

Ntang
 
Re : Formule matricielle ou macro

Bonsoir,

Sans voir le fichier pas évident ...😱
Ceci dit, si tes valeurs sont numériques, tu peux essayer une formule du type:

Code:
=DECALER(A1;EQUIV(9^9;A1:A10000;1)-1;;;)

Elle te donnera la dernière valeur numérique de ta colonne A (si c'est ce que tu cherches ? et à adapter à ton fichier bien sûr ).

Bien à toi,

mth
 
Re : Formule matricielle ou macro

Bonsoir mth,
Merci de ta réponse, je joins un morceau de mon fichier, dans ce classeur j'ai déjà une macro qui copie le tableau et le met en forme dans différentes feuilles, j'avais laissé ces formula matricielles.
Maintenant je souhaite ne plus laisser de formules et tout faire passer par une macro.
Les valeurs récupérées sont effectivement des valeurs numériques.
Merci de ton aide.
Cordialement.
Ntang
 

Pièces jointes

Re : Formule matricielle ou macro

re,

Voici la même chose, mais sans la lourdeur des matricielles.
Par ailleurs, la même formule peut-être utilisée dans une autre feuille pour récupérer la même chose.
Bref, pas compris l'intérêt d'une macro dans cette histoire 😕

Ceci dit, si tu y tiens absolument, il faut que tu précises au moins à quel endroit tu souhaites récupérer ces valeurs?

Bien à toi,

mth

Edit: Bonsoir Roger 🙂
Il est fort probable que je n'aie pas compris, mais il reste l'hypothèse que ni vous ni moi n'ayons rien compris 😀
Attendons d'en savoir plus ..
Bonne soirée,
m
 

Pièces jointes

Dernière édition:
Re : Formule matricielle ou macro

Bonsoir ntan-évindi
La demande n'est pas des plus claires ( doit-on récupérer le résultat ?) mais à tout hasard, je joins un essai à adapter...​
Bon courage.

ROGER2327
#4193


Vendredi 20 Absolu 138 (Sainte Mélusine, souillarde de cuisine, SQ)
6 Vendémiaire An CCXIX
2010-W39-1T20:54:55Z

__________________
Bonsoir mth...
Je n'avais pas vu vos réponses. Et en les voyant, je crois bien que je n'ai pas vraiment compris le problème !
 

Pièces jointes

Dernière édition:
Re : Formule matricielle ou macro

Re bonsoir mth, Bonsoir Roger,

Je comprends que sans fichier ma demande n'est pas claire...

Je vous joins donc un fichier que j'ai eu grand peine à alléger, l'onglet 1 contient les données et sur l'onglet Prepa il y des macros à commencer par charger les données et ensuite mettre en forme (attention l'onglet delete détruit la feuille 1) et en plus des macros des formules de rechercheV et les "fameuses formules matricielles".
Je souhaite maintenant, pour la qualité de mon fichier et aussi pour progresser dans ma connaissance de vba et d'excel (bien faible) tout faire passer par une macro.
J'espère que je ne vous demande pas trop, je souhaite surtout des pistes pour progresser.
D'avance merci.
Cordialement.
Ntang
 

Pièces jointes

Re : Formule matricielle ou macro

Re...
La procédure du précédent classeur légèrement modifiée devrait faire l'affaire :
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As Object, r As Range
Set x = Intersect(Target, Range("C6:[COLOR="Red"]AF[/COLOR]351"))
  If Not x Is Nothing Then
    For Each r In x.Columns
      Application.EnableEvents = False
      Cells([COLOR="Red"]364[/COLOR], r.Column).Value = IIf(IsEmpty(Cells(351, r.Column)), IIf(Cells(351, r.Column).End(xlUp).Row > 5, Cells(351, r.Column).End(xlUp).Value, 0), Cells(351, r.Column).Value)
      Application.EnableEvents = True
    Next
  End If
End Sub[/B][/COLOR]
Toute saisie dans la plage C6:AF351 sera prise en compte dans la plage C364:AF364.

À noter que vous n'avez pas que des valeurs numériques à prendre en compte puisqu'on trouve MOIS en C6...​
ROGER2327
#4195


Vendredi 20 Absolu 138 (Sainte Mélusine, souillarde de cuisine, SQ)
6 Vendémiaire An CCXIX
2010-W39-1T21:55:05Z
 
- 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

Réponses
1
Affichages
1 K
Retour