Selection et copie de lignes [Résolu]

Signaler
Messages postés
7
Date d'inscription
samedi 28 avril 2012
Statut
Membre
Dernière intervention
29 avril 2012
-
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
bonjour

voila je galère pour trouver les codes pour faire ce que je veux faire.

J'aimerai
- pouvoir sélectionner les lignes qui ont la même valeur dans la colonne A que la dernière ligne. sachant que le nombre de lignes peut varier et que la valeur dans la cellule (A dernière ligne) peut varier aussi
et
- copier cette sélection dans la feuille 2 (pour ça pas de pb)

exemple (sélectionner les lignes en rouge)
1 1 5 2 2
1 2 9 8 9
2 8 3 2 2
2 6 7 2 7
3 1 4 5 6
3 2 3 1 2
3 1 4 2 4


ou encore

1 1 5 2 2
1 2 9 8 9
2 8 3 2 2
2 6 7 2 7
5 1 4 5 6
5 2 3 1 2
5 1 4 2 4
5 2 2 9 8
5 2 4 9 1


merci d'avance de votre aide

Mélanie

13 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Bien
Veux-tu alors bien "libérer" ce sujet ? (clique sur le tag "réponse acceptée")


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Bonjour,
C'est quoi, dans VB6, une "colonne A", une "ligne", une "feuille", une "sélection" ?
Connais pas ! Peux-tu m'éclairer ?
PS : d'où l'absolue nécessité d'ouvrir une discussion non n'importe où, mais dans la section correspondant à son langage de développement.

Mon petit doigt (mais pourquoi diable devrait-il sans cesse intervenir ?) me dit que tu développes sous VBA/Excel


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
7
Date d'inscription
samedi 28 avril 2012
Statut
Membre
Dernière intervention
29 avril 2012

ton petit doigt a raison!
oui désolée je développe sous VBA/excel enfin du moins j'essaye
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
J'attendrai alors qu'un gentil admin passe par là et déplace ta discussion.
J'attendrai alors également que tu clarifies ton exposé, qui ne permet absolument pas pour l'instant de comprendre en vertu de quoi tu sélectionnes ce que tu as mis en rouge


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
7
Date d'inscription
samedi 28 avril 2012
Statut
Membre
Dernière intervention
29 avril 2012

en fait mon tableau est un exemple. la couleur était juste pour montrer la sélection attendue. en claire 'si on peut dire) toutes les lignes de mon tableur qui ont la même valeur dans la colonne A que la dernière ligne doivent être sélectionner pour être copier ailleurs
Messages postés
14655
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 février 2020
139
Bonjour,

Ucfoutu, le GA est passé (Gentil Admin :) ), tu as été entendu :)

As-tu déjà essayer quelquechose ?
Montres le code (voir le point 2 de ma signature).

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Messages postés
7
Date d'inscription
samedi 28 avril 2012
Statut
Membre
Dernière intervention
29 avril 2012

disons que je débute en vba, j'arrive a selectionner la dernière avec ce code
Sub essai()
Sheets("Feuil1").Activate
Range(Range("a" & Rows.Count).End(xlUp).Rows, Range("E" & Rows.Count).End(xlUp).Rows).Select
Selection.Copy
Sheets("Feuil2").Activate
Range("A2").Activate
ActiveSheet.Paste


End Sub

mais voila mon niveau limité fait que je suis vite bloquée
Messages postés
14655
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 février 2020
139
Bonjour,

Évites de travailler pas Select, Activate, ...
Utilises directement le objets.

Sinon, essayes de faire 2 passes :
- La première, pour récupérer la dernière combinaison, puis
- Une deuxième avec une boucle pour partir de la première ligne puis descendre jusqu'à trouver l’occurrence recherchée.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Voilà bien la preuve de la nécessité d'être clair,
Je t'avais dit :
J'attendrai alors également que tu clarifies ton exposé, qui ne permet absolument pas pour l'instant de comprendre en vertu de quoi tu sélectionnes ce que tu as mis en rouge

et niç ton 1er exposé du problème, ni ton explication complémentaire ne l'ont été.
Et voilà le résultat, donc. La réponse parfaitement légitime de NHenry :
La première, pour récupérer la dernière combinaison ...

CQFD
Car une ligne est une ligne, pas une cellule. Une ligne est composée de plusieurs cellules.
On va alors te poser la question essentielle, à la demande de mon petit doigt :
Ton problème serait-il le suivant (sans même un exemple) :

"coller à la suite, sur une feuil 2, toute ligne (totalité de la ligne) de la feuille 1 dont la cellule en colonne A contiendrait la même valeur que celle de la dernière cellule remplie de la colonne A"

Si oui : Plusieurs méthodes :
entre autres :
- Méthode Find en récursivité sur la colonne A
ou
- parcours de la colonne A à la recherche de ta valeur (boucle for.. to... next)
A chaque occurrence trouvée : Méthode Copy avec paramètre destination. En utilisant Entirerow
Ouvre ton aide VBA sur chacun des mots que j'ai soulignés. Lis.
Reviens, si encore difficulté, avec le code que tu as écrit sur ces bases.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
7
Date d'inscription
samedi 28 avril 2012
Statut
Membre
Dernière intervention
29 avril 2012

j'ai essayé de suivre vos conseils mais franchement je galère. rien ne marche
help please

j'en suis là mais ça doit etre méga faux

Sub essai2()
Sheets("Feuil1").Activate
    
        For Counter = 1 To Range("A" & Rows.Count).End(xlUp).Row
        Set curcell = Worksheets("feuil1").Cells(Counter, 1)
        If Abs(curcell.Value) = Range("A1").End(xlDown) Then curcell.EntireRow.Copy
       Sheets("Feuil2").Activate
        Range("A1048576").End(xlUp).Offset(1, 0).Activate
       ActiveSheet.Paste
    Next Counter
End Sub
Messages postés
7
Date d'inscription
samedi 28 avril 2012
Statut
Membre
Dernière intervention
29 avril 2012

j'ai mieux mais j'ai une erreur 1004 au niveau du collage
Sub essai2()
        Dim DerLigne As Long
        DerLigne = Range("A" & Rows.Count).End(xlUp).Row
            For Counter = 1 To DerLigne
        Set curcell = Worksheets("feuil1").Cells(Counter, 1)
        If Abs(curcell.Value) = Range("A1").End(xlDown) Then curcell.EntireRow.Copy
            ActiveSheet.Paste Destination:=Sheets("feuil2").Range("A1048576").End(xlUp).Offset(1, 0)
            Next Counter
End Sub




Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Commence à travailler en pointant directement vers les objets. Cesse d'y aller à coups de select, activate, activesheet, etc ...
Regarde cet exemple vite fait :

 With Sheets("Feuil1")
     derlig = .Range("A" & Rows.Count).End(xlUp).Row
     maval = .Range("A" & derlig).Value
     For counter = 1 To derlig
       If .Range("A" & counter) = maval Then
         .Rows(counter).Copy Destination:=Sheets("Feuil2").Range("A" & Sheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Row + 1)
        End If
    Next counter
  End With

et mets-le à ta sauce, notamment en ce qui concerne ton utilisation de valeurs absolues.



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
7
Date d'inscription
samedi 28 avril 2012
Statut
Membre
Dernière intervention
29 avril 2012

aaaaaaaaaaa trop bien
merci ca marche nikel. en effet c'est plus simple