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

XL 2016 Copier des cellules suivant une condition

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 !

Bonsoir Robert,

tu as très bien décrit ta demande, bravo ! 👍 🙂

sur "Feuil2", les colonnes H:J sont vides ; va sur "Feuil1", et fais Ctrl e 😊

VB:
Option Explicit: Option Compare Text 'comparaison Text => majuscules ou minuscules : idem

Sub Essai()
  If ActiveSheet.Name <> "Feuil1" Then Exit Sub 'on doit lancer la macro à partir de "Feuil1"
  Dim nlm&, dlg&: nlm = Rows.Count 'nlm : nombre de lignes maximum = 1048576
  dlg = Cells(nlm, "B").End(xlUp).Row 'dlg : dernière ligne, selon la colonne B (ici : 7)
  If dlg = 1 And IsEmpty([A1]) Then Exit Sub 'si y'a aucune donnée, on quitte la sub !
  Dim T, eqp$, n1&, n2&, lig&, i&
  T = [B1].Resize(dlg, 4) 'les données de B1:E7 sont mises dans le tableau T
  Worksheets("Feuil2").Select 'on va sur "Feuil2" pour y travailler, puis montrer les résultats
  n1 = Cells(nlm, "A").End(xlUp).Row 'n1 : dernière ligne, selon la colonne A (ici : 7 aussi)
  If n1 = 1 Or IsEmpty([A1]) Then Exit Sub 'si y'a aucune donnée, on quitte la sub !
  Application.ScreenUpdating = False 'désactive la mise à jour écran => exécution plus rapide
  Columns("H:J").ClearContents 'on efface les éventuels anciens résulats (des colonnes H:J)
  n2 = Cells(nlm, "H").End(xlUp).Row 'n2 : dernière ligne, selon la colonne H
  For lig = 1 To n1
    With Cells(lig, "B") 'avec la colonne B des noms d'équipe
      eqp = .Value 'nom de l'équipe
      If eqp <> "" Then
        For i = 1 To dlg 'boucle de 1 à dlg, pour balayer les lignes du tableau T
          If eqp = T(i, 1) Or eqp = T(i, 2) Then 'si l'équipe est trouvée, on écrit le résultat
            .Offset(, 6) = eqp      'colonne H : nom de l'équipe
            .Offset(, 7) = T(i, 3)  'colonne I : score n° 1
            .Offset(, 8) = T(i, 4)  'colonne J : score n° 2
          End If
        Next i
      End If
    End With
  Next lig
End Sub

si besoin, tu peux demander une adaptation.
à te lire pour avoir ton avis. 😉

soan
 

Pièces jointes

- 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
7
Affichages
176
Réponses
4
Affichages
381
Réponses
5
Affichages
200
Réponses
4
Affichages
149
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…