Sélectionner valeur d'une colonne

Etienne Soler -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. Paf
     
    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+
    0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    0