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

Microsoft 365 Macro avec fonction SI

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

T

Thibault123

Guest
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:
Je l'ai mis à cet endroit :
For j = 1 To 16: resu(1, j) = .Cells(1, j)
If test1 And (j < 4 Or j > 11) Or test2 Then resu(i, j) = f & a(j)
Next j

Et cela fonctionne.
Merci. Bonne journée.
 
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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Fonction si
Réponses
7
Affichages
118
Réponses
0
Affichages
168
Réponses
4
Affichages
214
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…