Sélectionner valeur d'une colonne

Bonjour,

Je suis en train de réalisé une macro et je vues tester ttes les valeurs de ma colonnes E pour les traitées ensuites :

j'ai essayer ceci mais cela ne fonctionne que ds certain cas , est ce juste ? y'a t'il une autre solution ?

___________________

Dim DerLig As Integer
Dim ligne As Integer
Sheets("TOTAL ORDER MORPHING WOMEN").Select
ligne = 1

Do Until ligne > DerLig
If Range(Cells(ligne, "E"), Cells(ligne, "E")).Value = "AS" Then

Range(Cells(ligne, "A"), Cells(ligne, "D")).Select
Selection.Copy
Sheets("Sheet33").Select
Range(Cells(ligne, "A"), Cells(ligne, "A")).Select
ActiveSheet.Paste
Sheets(Sheets.Count - 5).Select
ligne = ligne + 1
Else
ligne = ligne + 1
End If

________________________________

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. bonjour,

    En supposant la variable Derlig est initialisée quelque part (ce qui n'est pas le cas dans le code proposé):
    For i = 1 To Derlig
    If Range("A" & i) = "AS" Then
        Range(Cells(i, "A"), Cells(i, "D")).Copy
        Sheets("Sheet33").Range(Cells(i, "E"), Cells(i, "K")).Select
        ActiveSheet.Paste
    End If
    Next
     Sheets(Sheets.Count - 5).Select
    

    je n'ai pas testé le code, il se peut qu'il y ait un problème de feuille active (c'est pour ça que j'ai déplacé Sheets(Sheets.Count - 5).Select après la boucle for).

    A+
    1. Contributeur
      Bonjour

      en VBA évite au maximum les select sélection et les copy paste

      si tu reportes uniquement des valeurs avec beaucoup de "AS"

      Sub xxx()
      Dim Derlig As Integer, Nbre As Integer, Cptr As Integer
      Dim Tablo(), Ligne As Integer
      
      Application.ScreenUpdating = False
      With Sheets("TOTAL ORDER MORPHING WOMEN")
      
           Derlig = .Columns("E").Find("*", , , , , xlPrevious).Row
           Nbre = Application.CountIf(.Range("E1:E" & Derlig), "AS")
           If Nbre = 0 Then GoTo erreur
      
           lig = 1 'ligne restiturtion
           Ligne = 1
           For Cptr = 1 To Nbre
                Ligne = .Columns("E").Find("AS", .Cells(Ligne, "E"), xlValues, xlWhole).Row
                Tablo = .Range(.Cells(Ligne, "A"), .Cells(Ligne, "D")).Value
                Sheets("Sheet33").Cells(lig, "A").Resize(1, 4) = Tablo
                lig = lig + 1
           Next
      End With
      Exit Sub
      
      erreur:
      MsgBox """AS"" inconnu", vbCritical
      End Sub


      comme notre ami Paf, que je salue, le Sheets(Sheets.Count - 5).Select m'a paru bizarre et je ne l'ai pas traité
      si tu veux t'y rendre à la fin
      Sheets(Sheets.Count - 5).Activate