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

Index() avec projection des données et mef

  • Initiateur de la discussion Initiateur de la discussion anthoYS
  • 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 !

anthoYS

XLDnaute Barbatruc
Bonjour,

Dans ce fichier, le problème c'est qu'il s'agit d'une formule matricielle.

Ce que je souhaite, c'est que lors de la projection des données, la mise en forme des données projetées soit conservé(s) (couleur de fond, soulignement, caractère en gras et/ou italique...).

Et je ne parviens pas à trouver une formule qui permette ceci.
Je suppose que cela doit exister.

Si quelqu'un à une idée. S'il vous plaît.

Voyez le fichier joint, merci par avance.

Cordialement.
 

Pièces jointes

Re : Index() avec projection des données et mef

Bonjour,

Une solution mais en VBA.
Je me suis basé entièrement sur votre exemple et il est impératif de conserver la structure de chaque feuille.

Copiez le code suivant dans la fenêtre de code de la feuille "Projection"
Code:
Const COL_KP As Long = 6
Const COL_CLE As Long = 9
Private Sub Worksheet_Change(ByVal Target As Range)
Dim S As Worksheet
Dim Cible As Range
Dim Lig&
Dim Cle&
Dim A$
Dim R As Range
Dim var
Dim i&
On Error GoTo Erreur
'--- Contrôle de validité ---
If Target.Column = COL_KP Then
  If Target = "" Or Target.Offset(0, COL_CLE - COL_KP) = "" Then Exit Sub
  Set Cible = Target.Offset(0, 2)
ElseIf Target.Column = COL_CLE Then
  If Target = "" Or Target.Offset(0, COL_KP - COL_CLE) = "" Then Exit Sub
  If LCase(Target) <> "cléa" And LCase(Target) <> "cléb" Then Exit Sub
  Set Cible = Target.Offset(0, -1)
Else
  Exit Sub
End If
Lig& = Target.Row
'--- Distinction des Clés ---
A$ = LCase(Range("I" & Lig& & ""))
If A$ = "cléa" Then
  Cle& = 7
ElseIf A$ = "cléb" Then
  Cle& = 15
End If
'--- Vire les espaces ---
A$ = Range(Cells(Lig&, COL_KP), Cells(Lig&, COL_KP))
A$ = Replace(A$, Space(1), "")
'--- Recherche dans la feuille "Base" ---
Set S = Sheets("Base")
Set R = S.Range("f1:f" & S.Range("f65536").End(xlUp).Row & "")
var = R
For i& = 1 To UBound(var, 1)
  If A$ = var(i&, 1) Then
    S.Range(S.Cells(i&, Cle&), S.Cells(i&, Cle&)).Copy
    Application.EnableEvents = False
    Cible.PasteSpecial xlPasteAll
    Exit For
  End If
Next i&
Erreur:
Application.EnableEvents = True
Application.CutCopyMode = False
End Sub

Lorsque vous changez une valeur dans la colonne F ou la colonne I de la feuille "Projection" la procédure évènementielle
"Worksheet_Change" est lancée et, selon la validité des données, reporte en colonne H la valeur et la mise en forme
correspondante de la feuille "Base".

Cordialement.

PMO

Patrick Morange
 
Re : Index() avec projection des données et mef

Merci beaucoup, ça fonctionne.

J'ai compris comment tu as procédé. Bravo en tout les cas.

Cordialement.
 
Dernière édition:
- 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

K
Réponses
2
Affichages
3 K
K
A
Réponses
48
Affichages
6 K
Ananas94
A
L
Réponses
5
Affichages
2 K
lumiexcel
L
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…