Correction CODE TRIAGE

  • Initiateur de la discussion Initiateur de la discussion cg1980
  • Date de début Date de début

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 !

cg1980

XLDnaute Occasionnel
Bonjour,

Dans le fichier joint, j'aimerais
-Sélectionner toute la plage de donnée en "tri_secteurs"
-Prendre les lignes où la valeur en colonne u est soit "DG" soit "DN"-
-Copier ces lignes dans l'onglet Domestic à partir de la ligne 9.

Note: en tri_secteurs les données peuvent aller jusqu'à la ligne 15 ou 30...
Ce n'est pas fixe, peut-on dire à vba qu'il selectionne lui-même toutes les lignes

Voilà une copie de mon code (que je n'arrive pas à faire fonctionner):
Private Sub CommandButton1_Click()
Dim i As Integer

For i = 9 To 140
Sheets("tri_secteurs").Select
If ActiveSheet.Cells(i, 16) = "DN" Or ActiveSheet.Cells(i, 16) = "DG" Then Rows(i, i).Select
Selection.Copy
Sheets("Domestic").Select
Cells(i, 1).Select
ActiveSheet.Paste
Next

End Sub

Merci
 

Pièces jointes

Re : Correction CODE TRIAGE

Bonjour cg1980, bonjour à toutes et à tous 🙂

J'ai un peu modifié ton code :

Code:
[COLOR="Blue"]Private Sub[/COLOR] CommandButton1_Click()
[COLOR="Green"]'[/COLOR]
[COLOR="blue"]Dim[/COLOR] i [COLOR="blue"]As Long[/COLOR], j [COLOR="blue"]As Long[/COLOR]
[COLOR="green"]'[/COLOR]

  j = Sheets("Domestic").Range("A65536").End(xlUp).Row + 1
  
  [COLOR="blue"]For[/COLOR] i = 9 [COLOR="blue"]To[/COLOR] Range("A65536").End(xlUp).Row
    [COLOR="blue"]If[/COLOR] ActiveSheet.Cells(i, [B][I]21[/I][/B]) = "DN" [COLOR="blue"]Or[/COLOR] ActiveSheet.Cells(i, [B][I]21[/I][/B]) = "DG" [COLOR="blue"]Then[/COLOR]
      Rows(i).Copy Sheets("Domestic").Rows(j)
      j = j + 1
    [COLOR="blue"]End If[/COLOR]
  [COLOR="blue"]Next[/COLOR] i

[COLOR="blue"]End Sub[/COLOR]

D'autre part, tu testais la colonne 16 au lieu de 21.

@+

EDIT : Bonjour mth, je n'avais pas rafraîchi 🙂
 

Pièces jointes

Re : Correction CODE TRIAGE

J'ai un peu modifié ton code :

Code:
[COLOR="Blue"]Private Sub[/COLOR] CommandButton1_Click()
[COLOR="Green"]'[/COLOR]
[COLOR="blue"]Dim[/COLOR] i [COLOR="blue"]As Long[/COLOR], j [COLOR="blue"]As Long[/COLOR]
[COLOR="green"]'[/COLOR]

  j = 9
  
  [COLOR="blue"]For[/COLOR] i = 9 [COLOR="blue"]To[/COLOR] Range("A65536").End(xlUp).Row
    [COLOR="blue"]If[/COLOR] ActiveSheet.Cells(i, [B][I]21[/I][/B]) = "DN" [COLOR="blue"]Or[/COLOR] ActiveSheet.Cells(i, [B][I]21[/I][/B]) = "DG" [COLOR="blue"]Then[/COLOR]
      Rows(i).Copy Sheets("Domestic").Rows(j)
      j = j + 1
    [COLOR="blue"]End If[/COLOR]
  [COLOR="blue"]Next[/COLOR] i

[COLOR="blue"]End Sub[/COLOR]

D'autre part, tu testais la colonne 16 au lieu de 21.

@+

EDIT : Bonjour mth, je n'avais pas rafraîchi 🙂

Mal lu 😱, je commençais à la première ligne vide sans tenir compte de ta demande de commencer à la ligne 9

@+
 
Re : Correction CODE TRIAGE

Bonjour,

Bonjour Mireille 🙂
Bonjour nolich

Mireille, dans la même idée (filtre élaboré) :

Code:
Sub extract()
Range("A8:X" & [A65000].End(xlUp).Row).Name = "base"
Range("AA2").FormulaR1C1 = "=OR(R[7]C[-6]=""DG"",R[7]C[-6]=""DN"")"
With Sheets("Domestic")
    Range("A8:X8").Copy .Range("A8")
    Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("AA1:AA2"), _
        CopyToRange:=.Range("A8:X8")
End With
[AA2].ClearContents
End Sub
 
- 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
10
Affichages
802
Retour