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

Microsoft 365 Macro avec fonction SI

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 !

Thibault123

XLDnaute Junior
Bonjour,

J'ai une macro qui permet de récupérer des données à partir de plusieurs fichiers Excel.
En fonction de la valeur en colonne D, j'aimerais que certaines valeurs soient récupérées.

Si la valeur en colonne D est "E_0018_v20_5K_QC_report.xls" ou "E_0306_v8_8K_QC_report.xlsx" ou "E_0022_v9_2K_QC_report.xlsx", j'aimerais que soient affichées les valeurs resu correspondant aux txt1, 2, 3, 12, 13, 14, 15 et 16 de la macro.
Si la valeur en colonne D est "E_0018_v21_5K_QC_report.xlsx" ou "E_0306_v9_8K_QC_report.xlsx" ou "E_0022_v11_2K_QC_report.xlsx", j'aimerais que soient affichées toutes les valeurs resu de la macro.

J'espère avoir été clair!?
Je ne sais pas comment intégrer cette fonction SI dans la macro existante, et cela pour que la macro soit la plus rapide/efficace possible.

Merci d'avance pour votre aide.
 

Pièces jointes

Bonjour Thibault123, le forum,

Vérifiez que c'est bien ceci que vous voulez :
VB:
Sub Recuperation_scores()
Dim chemin$, a(1 To 16), tablo, resu(), i&, x$, f$, test1 As Boolean, test2 As Boolean, j%
chemin = [A1]
a(1) = "G2"
a(2) = "H2"
a(3) = "I2"
a(4) = "J2"
a(5) = "M195"
a(6) = "M196"
a(7) = "M197"
a(8) = "M198"
a(9) = "M199"
a(10) = "M200"
a(11) = "M201"
a(12) = "F196"
a(13) = "F197"
a(14) = "F198"
a(15) = "F199"
a(16) = "F200"
tablo = [A3].CurrentRegion.Resize(, 4)
With [A3].CurrentRegion.Columns(5).Resize(, 16)
    ReDim resu(1 To .Rows.Count, 1 To 16) 'resu = .Formula
    For i = 2 To UBound(tablo)
        If IsDate(tablo(i, 1)) Then
            x = tablo(i, 4)
            f = "='" & chemin & tablo(i, 2) & "\[" & x & "]10. Quality KPI'!"
            test1 = x = "E_0018_v20_5K_QC_report.xls" Or x = "E_0306_v8_8K_QC_report.xlsx" Or x = "E_0022_v9_2K_QC_report.xlsx"
            test2 = x = "E_0018_v21_5K_QC_report.xlsx" Or x = "E_0306_v9_8K_QC_report.xlsx" Or x = "E_0022_v11_2K_QC_report.xlsx"
            For j = 1 To 16
                If test1 And (j < 4 Or j > 11) Or test2 Then resu(i, j) = f & a(j)
            Next j
        End If
    Next i
    Application.DisplayAlerts = False
    For j = 1 To 16: resu(1, j) = .Cells(1, j): Next 'titres
    .Formula = resu
End With
End Sub
A+
 
Dernière édition:
Mais non, il faut récupérer les titres à l'endroit que j'ai indiqué, après la boucle For i = 2 To UBound(tablo)

Comme vous le faites (dans la boucle i) cela sera répété un grand nombre de fois...
 
- 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
0
Affichages
131
Réponses
4
Affichages
178
Réponses
40
Affichages
3 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…