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:
- 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
Retour