Sélectionner valeur d'une colonne

Fermé
Etienne Soler - Modifié par krazykat le 13/06/2012 à 14:24
michel_m Messages postés 16593 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 23 mars 2023 - 13 juin 2012 à 17:16
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

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
michel_m Messages postés 16593 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 23 mars 2023 3 293
13 juin 2012 à 17:16
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