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

robertduval

XLDnaute Junior
Bonjour je souhaite copier des cellules suivant une condition, si vous pouviez m'expliquer comment faire en vba, MERCI
 

Pièces jointes

  • Test.xlsx
    12.5 KB · Affichages: 7

soan

XLDnaute Barbatruc
Inactif
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

  • Test.xlsm
    21.4 KB · Affichages: 4

Discussions similaires

Réponses
2
Affichages
167
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…