Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

copier/coller puis supprimer

  • Initiateur de la discussion Initiateur de la discussion ktran
  • 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 !

K

ktran

Guest
bonjour a tous,

dans la feuille 1, j ai des donnees. dand la colonne K, j ai un statut 1 ou rien
si dans la colonne K, statut = 1 alors, copier la ligne entiere et la coller dans la feuille 2
ensuite, supprimer la ligne dans la feuille 1

evidemment, la macro doit se poursuivre jusqu'a qu elle rencontre une ligne vide et le collage dans la feuille 2 ne doit pas ecraser les donnees deja saisies

merci pour votre aide

cordialement
 

Pièces jointes

Re : copier/coller puis supprimer

salut ktran,

j'ai mis des commentaires dans le code...

bonjour Kobaya,

j ai bien compris le commentaire pour le sub suppr()

concernant le commentaire sub copy(), je pense qu il y a un probleme :
cela ne copie pas la ou les lignes avec le statut "1" vers le Sheet2 mais ca copie une partie du fichier avec les donnees "24" du fichier Sheet1, euh... je comprends pas.

je te renvoie un fichier, pouvez vous jeter un coup d oeil.

merci d avance
 

Pièces jointes

Re : copier/coller puis supprimer

Bonsoir ktran,

Remplace ta procédure Sub copy() par le code ci-dessous. J'y ai ajouté un Stop au début. Quand l'éditeur VBA s'affiche, appuie sur F8 pour exécuter les commandes une à une.
Code:
Sub copy()
    Dim ligne   As Range
    Dim r       As Long
    
    Stop
    With Sheets("Sheet1")
        For Each ligne In .Range("A2:A" & m_nbLignes).Rows
            If .Cells(ligne.Row, 11).Value = "1" Then
                ' il faut initialiser r avant de l'utiliser.
                ' r vaut 0 au départ, et il n'y a pas de ligne 0 dans Excel...
                r = r + 1
                
                ' ligne est un objet Range, qui va prendre successivement toutes les valeurs
                ' de la plage définie dans le For Each/Next, soit A1, A2, A3, A4, A5, etc...
                ' place le curseur au dessus de ligne, et tu verras non pas le numéro de ligne que tu souhaites copier,
                ' mais le contenu de la cellule ($A$1) référencée par l'objet ligne, c'est à dire 3333333
                ' ==> donc tu copies la ligne 3333333 dans l'autre onglet
                ' il faut utiliser, comme sur la ligne If/Then ci-dessus, ligne.Row, qui renvoie le numéro de la ligne à copier (10)
                
                ' mauvais code
                '.Rows(ligne).copy Destination:=Sheets("Sheet2").Rows(r)
            
                ' bon code
                .Rows(ligne.Row).copy Destination:=Sheets("Sheet2").Rows(r)
            End If
        Next
    End With
End Sub
 
Dernière édition:
Re : copier/coller puis supprimer


Kobaya,

j ai copie le code ci-dessus et je ne trouve pas les resultats que tu mentionne
ci joint les messages d erreur.

ou es le probeleme, j ai beau cherche, je n y parviens vraiment pas.

merci d avance
 

Pièces jointes

  • error vba.JPG
    40.6 KB · Affichages: 86
  • error vba3.jpg
    47.2 KB · Affichages: 82
  • error vba2.jpg
    42.6 KB · Affichages: 89
Re : copier/coller puis supprimer

ooops! désolé ktran,

J'ai omis de te dire de déclarer la variable m_nbLignes au niveau module.

Essaie le fichier joint. J'espère que cette fois-ci, je n'ai rien oublié 😱.
 

Pièces jointes

Re : copier/coller puis supprimer

ooops! désolé ktran,

J'ai omis de te dire de déclarer la variable m_nbLignes au niveau module.

Essaie le fichier joint. J'espère que cette fois-ci, je n'ai rien oublié 😱.

un grand merci Kobaya.

apres avoir teste, j ai juste detecte un petit souci.

1) quand il y a plusieurs lignes (ex. ligne 10 et 15) avec le statut "1", la macro copie bien ces 2 lignes dans le sheet2 mais des sauts de lignes.

2) lors d un nouveau test (controller s'i y a de nouvelles lignes avec le statut "1"), s'il y en a,la macro copie bien les lignes mais ecrase les anciennes lignes deja presente dans sheet2. la macro ne doit pas ecrase les anciennes lignes mais copier sur la(les) premiere ligne vide et ainsi de suite

3) dans sheet2, le statut "1" ne doit pas apparaitre.

j ai essaye de rajoute R+1 mais rien ny fait.

une idee d ou vient le probleme ?
 

Pièces jointes

  • test.JPG
    40.1 KB · Affichages: 77
  • resultat.JPG
    19.7 KB · Affichages: 75
  • test.JPG
    40.1 KB · Affichages: 78
  • resultat.JPG
    19.7 KB · Affichages: 76
  • resultat test 2.JPG
    18 KB · Affichages: 76
  • test.JPG
    40.1 KB · Affichages: 74
  • resultat.JPG
    19.7 KB · Affichages: 75
  • new test.JPG
    28.9 KB · Affichages: 76
Re : copier/coller puis supprimer

Voici une nouvelle version, où la variable "r", dans la Sub copy(), a disparu au profit de la commande
Code:
Sheets("sheet2").Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Offset((Sheets("sheet2").Range("A1").Value <> "") * -1, 0)
Une commande, un peu compliquée je te l'accorde, mais qui a le triple avantage

  • de ne pas effacer les lignes déjà présentes dans Feuil2 (comme tu le demandes)
  • de fonctionner quelque soit la version Excel utilisée (2007 avec 1048576 lignes, les versions précédentes avec 65536 lignes, grâce à "ActiveSheet.Rows.Count")
  • "(Sheets("sheet2").Range("A1").Value <> "") * -1" : cette formule permet de ne pas se déplacer d'une ligne vers le bas dans le cas de la première ligne copiée (essaie la commande en commentaire avec .Offset(1, 0))
 

Pièces jointes

Re : copier/coller puis supprimer



Kobaya, je tenais a te remercier de ton aide pour ce petit projet. en plus du code qui fonctionne tres bien, les explications sont vraiment tres claires et j ai encore appris beaucoup de choses sur VBA.

un grand merci encore

cordialement
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
326
Réponses
5
Affichages
666
Réponses
8
Affichages
783
Réponses
10
Affichages
665
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…