sélection de lignes

Chico64

XLDnaute Junior
Bonjour,

Ce que j'aurai souhaité (voir fichier attaché) c'est sélectionner, copier et coller (à un autre endroit par exemple en A1 de la sheet2) toutes les lignes qui ont pour valeur "00-NPI milestones", puis apres toutes les lignes qui ont pour valeur "02-SiliconOut" (par exemple en A10 de la sheet2) , et toutes les lignes qui ont pour valeur "" (par exemple en A15 de la sheet2), ......... en code VBA.

Merci pour votre aide.
Chico.
 

Pièces jointes

  • test.zip
    7.6 KB · Affichages: 23
  • test.zip
    7.6 KB · Affichages: 26
  • test.zip
    7.6 KB · Affichages: 25

alex67800

XLDnaute Impliqué
Re : sélection de lignes

Bonjour Chico64,

A tester (fait à l'arrache après longue nuit de taff)

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim plage As Range
Set plage = Range("A1:G" & Range("A65536").End(xlUp).Row)
derlig = Sheets(2).Range("A65536").End(xlUp).Row + 1

Application.ScreenUpdating = False
For Each Target In plage
On Error Resume Next
If Target.Value = "" Then: Exit Sub
If Target.Offset(0, 6).Value = "00-NPI milestones" Then
Target.EntireRow.Copy
Sheets(2).Range("A1" & derlig).PasteSpecial
End If
If Target.Offset(0, 6).Value = "02-SiliconOut" Then
Target.EntireRow.Copy
Sheets(2).Range("A10" & derlig).PasteSpecial
End If
If Target.Value <> "" And Target.Offset(0, 6).Value = "" Then
Target.EntireRow.Copy
Sheets(2).Range("A15" & derlig).PasteSpecial
End If
Next
Application.ScreenUpdating = True
End Sub
 

kjin

XLDnaute Barbatruc
Re : sélection de lignes

Bonjour,
Ce que j'aurai souhaité (voir fichier attaché) c'est sélectionner, copier et coller (à un autre endroit par exemple en A1 de la sheet2) toutes les lignes qui ont pour valeur "00-NPI milestones", puis apres toutes les lignes qui ont pour valeur "02-SiliconOut" (par exemple en A10 de la sheet2) , et toutes les lignes qui ont pour valeur "" (par exemple en A15 de la sheet2), ......... en code VBA.
En somme, tu veux copier la feuille1 vers la feuille2 :confused:
Et pourtant, il me semble être bien réveillé
A+
kjin
 

Chico64

XLDnaute Junior
Re : sélection de lignes

Bonjour,

Ce n'est pas la feuille 1 que je veux copier vers la feuille 2, c'est un peu plus compliqué que ça ;)

Je vous envoie le fichier sur lequel je travaille, je vous explique sur ce fichier xls.

En sheet2, vous pouvez voir des données qui sont triées par "00-NPI milestones", "02-SiliconOut", "03-Samples", .... (colonne G).

Ce que je souhaiterais sur la sheet2, c'est sélectionner et copier toutes les lignes (de A à F) qui ont en colonne "G" la valeur "00-NPI milestones" et coller ces lignes dans la feuille "Modele" à la cellule "B5" car c'est la zone dans cette page qui correspond à "00-NPI milestones" .

Puis faire de meme pour les lignes qui ont en colonne "G" la valeur "02-SiliconOut" et coller ces lignes dans la feuille "Modele" à la cellule "B12" car c'est la zone dans cette page qui correspond à "02-SiliconOut".

Et ainsi de suite.

C'est ça qui me complique la vie.

Vous remercie pour votre aide.
Chico
 

Pièces jointes

  • Macro APG_14.zip
    30.7 KB · Affichages: 21

Excel-lent

XLDnaute Barbatruc
Re : sélection de lignes

Bonjour Chico64,

J'ai regardé ton dernier fichier, sur ta feuille modèle (du moins pour les 4 première activité, le nombre de ligne vide correspond pile poil au nombre de ligne à récupérer sur la feuille "Sheet2"!

Ce sera toujours le cas? Ou faut-il également gérer cela dans ta macro (ajout-suppression de lignes sur la feuille "Modele")?

Bon samedi
 

Chico64

XLDnaute Junior
Re : sélection de lignes

Salut à Tous,

Merci à vous de m'avoir aidé, j'ai trouvé par moi même et je vous donne ma solution, ce n'est surment pas le meilleur code mais cela marche sans problème.

Chico


Code:
Sheets("DonneesImportees").Select

maDerniereLigne = Range("b65000").End(xlUp).Rows.Row
nbrLign00NPImilestones = 5
nbrLign02SiliconOut = 12
nbrLign03Samples = 20
nbrLign04ngi = 26
nbrLign05EngiCorner = 36
nbrLign06DesignValidation = 43
nbrLign07Application = 47
nbrLign08Reliability = 49
nbrLign22SiliconOut = 55
nbrLign23Samples = 59
nbrLign24Engi = 61
nbrLign26DesignValidation = 72
nbrLign27Application = 77
nbrLign28Reliability = 79

For i = 1 To maDerniereLigne

    Sheets("DonneesImportees").Select
    ValeurActivity = Range("A" & i).Offset(0, 6).Rows 'valeur
            
            If (ValeurActivity = "00-NPI milestones") Then
                Range("A" & i & ":F" & i).Select
                Selection.Copy
                Sheets(UserForm1.TextBox1.Text).Select
                Range("B" & nbrLign00NPImilestones).Select
                nbrLign00NPImilestones = nbrLign00NPImilestones + 1
                ActiveSheet.Paste
            End If
            
            If (ValeurActivity = "02-SiliconOut") Then
                Range("A" & i & ":F" & i).Select
                Selection.Copy
                Sheets(UserForm1.TextBox1.Text).Select
                Range("B" & nbrLign02SiliconOut).Select
                nbrLign02SiliconOut = nbrLign02SiliconOut + 1
                ActiveSheet.Paste
            End If

            If (ValeurActivity = "03-Samples") Then
                Range("A" & i & ":F" & i).Select
                Selection.Copy
                Sheets(UserForm1.TextBox1.Text).Select
                Range("B" & nbrLign03Samples).Select
                nbrLign03Samples = nbrLign03Samples + 1
                ActiveSheet.Paste
            End If

            If (ValeurActivity = "04-Engi") Then
                Range("A" & i & ":F" & i).Select
                Selection.Copy
                Sheets(UserForm1.TextBox1.Text).Select
                Range("B" & nbrLign04ngi).Select
                nbrLign04ngi = nbrLign04ngi + 1
                ActiveSheet.Paste
            End If

            If (ValeurActivity = "05-Engi Corner") Then
                Range("A" & i & ":F" & i).Select
                Selection.Copy
                Sheets(UserForm1.TextBox1.Text).Select
                Range("B" & nbrLign05EngiCorner).Select
                nbrLign05EngiCorner = nbrLign05EngiCorner + 1
                ActiveSheet.Paste
            End If

            If (ValeurActivity = "06-Design Validation") Then
                Range("A" & i & ":F" & i).Select
                Selection.Copy
                Sheets(UserForm1.TextBox1.Text).Select
                Range("B" & nbrLign06DesignValidation).Select
                nbrLign06DesignValidation = nbrLign06DesignValidation + 1
                ActiveSheet.Paste
            End If

            If (ValeurActivity = "07-Application") Then
                Range("A" & i & ":F" & i).Select
                Selection.Copy
                Sheets(UserForm1.TextBox1.Text).Select
                Range("B" & nbrLign07Application).Select
                nbrLign07Application = nbrLign07Application + 1
                ActiveSheet.Paste
            End If

            If (ValeurActivity = "08-Reliability") Then
                Range("A" & i & ":F" & i).Select
                Selection.Copy
                Sheets(UserForm1.TextBox1.Text).Select
                Range("B" & nbrLign08Reliability).Select
                nbrLign08Reliability = nbrLign08Reliability + 1
                ActiveSheet.Paste
            End If

            If (ValeurActivity = "22-SiliconOut") Then
                Range("A" & i & ":F" & i).Select
                Selection.Copy
                Sheets(UserForm1.TextBox1.Text).Select
                Range("B" & nbrLign22SiliconOut).Select
                nbrLign22SiliconOut = nbrLign22SiliconOut + 1
                ActiveSheet.Paste
            End If

             If (ValeurActivity = "23-Samples") Then
                Range("A" & i & ":F" & i).Select
                Selection.Copy
                Sheets(UserForm1.TextBox1.Text).Select
                Range("B" & nbrLign23Samples).Select
                nbrLign23Samples = nbrLign23Samples + 1
                ActiveSheet.Paste
            End If

            If (ValeurActivity = "24-Engi") Then
                Range("A" & i & ":F" & i).Select
                Selection.Copy
                Sheets(UserForm1.TextBox1.Text).Select
                Range("B" & nbrLign24Engi).Select
                nbrLign24Engi = nbrLign24Engi + 1
                ActiveSheet.Paste
            End If

            If (ValeurActivity = "26-Design Validation") Then
                Range("A" & i & ":F" & i).Select
                Selection.Copy
                Sheets(UserForm1.TextBox1.Text).Select
                Range("B" & nbrLign26DesignValidation).Select
                nbrLign26DesignValidation = nbrLign26DesignValidation + 1
                ActiveSheet.Paste
            End If

            If (ValeurActivity = "27-Application") Then
                Range("A" & i & ":F" & i).Select
                Selection.Copy
                Sheets(UserForm1.TextBox1.Text).Select
                Range("B" & nbrLign27Application).Select
                nbrLign27Application = nbrLign27Application + 1
                ActiveSheet.Paste
            End If
            
            If (ValeurActivity = "28-Reliability") Then
                Range("A" & i & ":F" & i).Select
                Selection.Copy
                Sheets(UserForm1.TextBox1.Text).Select
                Range("B" & nbrLign28Reliability).Select
                nbrLign28Reliability = nbrLign28Reliability + 1
                ActiveSheet.Paste
            End If
    Next
 

vbacrumble

XLDnaute Accro
Re : sélection de lignes

Bonjour



Tu peux alléger ton code en supprimant les Select ainsi:


(sous réserve car je ne peux tester)

Code:
If (ValeurActivity = "00-NPI milestones") Then
                Range("A" & i & ":F" & i).Copy Sheets(UserForm1.TextBox1.Text).Range("B" & nbrLign00NPImilestones)
                nbrLign00NPImilestones = nbrLign00NPImilestones + 1
          
            End If
 

Discussions similaires

Statistiques des forums

Discussions
312 502
Messages
2 089 022
Membres
104 006
dernier inscrit
CABROL