Menu

Créer une macro

- - Dernière réponse :  bob - 11 janv. 2019 à 10:41
https://www.cjoint.com/c/IAiqKLXZ47J

Voici mon besoin, je voudrais coller dans la feuil2, toutes les lignes pour lesquelles dans la colonne G il y a un numéro différent de 1,
Donc les cases vides aussi, et qui lors de ces groupes, le lot ou le numéro de pièce est différent sur les groupes de 2 ou 4 lignes.

Si ce n'est pas clair je peut apporter plus d'explication
Afficher la suite 

Votre réponse

3 réponses

Messages postés
24067
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 janvier 2019
2140
0
Merci
Bonjour,

Oui et ?

Déjà.. il n'y a pas de Feuil2 dans ton classeur

Ensuite... il n'y a rien de bien compliqué.... qu'as tu commencé à coder ?

Car bon.. il suffit de faire une boucle sur tes lignes
Vérifier à l'aide d'un IF si la valeur de la cellule est égale à 1 ou non
Faire le "copier/coller"

Reviens nous voir avec un début de code si tu bloques...

NB: Pour poster du code sur le forum, merci de le faire en utilisant LES BALISES DE CODE (et en y précisant le langage)
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code


https://www.cjoint.com/c/IAiskulugsh
jordane45
Messages postés
24067
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 janvier 2019
2140 > bob -
Me recoller le lien.... histoire de faire un "UP" de ton message n'a aucun intérêt...
Je l'avais bien vu la première fois...... et il est toujours présent dans la discussion....

J'allais te coller le code qui effectue ce que tu souhaites... mais me faire relancer de la sorte m’insupporte.
Je viendrai donc le coller un un plus tard.... si j'y pense.
En fait ce N est pas le même. Jai remis le fichier avec la feuille 2 comme demandé. Afin qu'il soit plus à jour.
Pas de soucis.
J'attendais, mais merci quand même savoir pris un peut de ton temps pour moi.
jordane45
Messages postés
24067
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 janvier 2019
2140 -
Aller... essaye ça :

Il faut éviter au maximum les "select".
Par contre, tu dois préciser les feuilles devant tes "Range" pour qu'excel sache entre quelle et quelle feuille il doit copier puis coller...

Tu dois aussi, à chaque tour de boucle, regarder quelle est le numéro de la première ligne vide disponible pour ta feuille 2 afin d'y coller le contenu sans créer de trou.

Un truc du genre
Sub tri2()
    Dim Fsrc As Worksheet
    Dim Fcib As Worksheet
    Dim Derniere_Ligne As Long
    Dim FcibleLastRow As Long
    Dim rngSrc As Range
    Dim rngCib As Range
    
    Set Fsrc = Sheets("Feuil1") 'Feuille source
    Set Fcib = Sheets("Feuil2") ' Feuille Cible
        
    'On compte le nombre de lignes dans la feuille 1
    Derniere_Ligne = Fsrc.Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
    
    
    'On boucle dessus
    For i = 2 To Derniere_Ligne
        
        If Fsrc.Cells(i, 7) <> 1 And (Fsrc.Cells(i, 2) <> Fsrc.Cells(i + 1, 2) Or Fsrc.Cells(i, 3) <> Fsrc.Cells(i + 1, 3)) Then
            Set rngSrc = Fsrc.Range("A" & i & ":" & "G" & i)
            
            'première ligne vide dispo, dans la  Feuille cible
            FcibleLastRow = Fcib.Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row + 1
            Set rngCib = Fcib.Range("A" & FcibleLastRow & ":" & "G" & FcibleLastRow)
        
            rngCib.Value = rngSrc.Value ' on copie les valeurs de la plage cible vers la plage source
      End If
    Next


End Sub
Je voudrais pas abuser de ta générosité. J'ai sûrement mal exprimé mon besoin. Mais il y a un début de réponse.
Je m'explique :
Dans la colonne 7 il y a des groupes de lignes . Du coup s'il est écrit 2 ou 4, alors le groupe se compose de la ligne sur lequel est écrit le chiffre est des lignes vides qui se trouvent directement au dessus, soit 1 ou 3 lignes pour cet exemple.
Je voudrais donc copier-coller tous les groupes de lignes en entier, pour lesquels dans les colonnes 2 ou 3 il y a des chiffres qui diffèrent, entre les lignes du groupe.

Je suis débutant sur VBA, d'où mes demandes.

Merci à toit, et aux autres qui verrons mon message ;-)

BOB
Commenter la réponse de jordane45
0
Merci
https://www.cjoint.com/c/IAiskulugsh

Voici mon fichier dans lequel il y a mon amorce de code/ Je le remet ci-dessous aussi

Sub tri()
i = 2
While i < 10
If Cells(i, 7) <> 1 And Cells(i, 2) <> Cells(i + 1, 2) Or Cells(i, 3) <> Cells(i + 1, 3) Then

Rows("i:i").Select
Selection.Copy
Sheets("Feuil2").Select
Rows("i:i").Select
ActiveSheet.Paste

End If

Wend

End Sub
Commenter la réponse de bob
0
Merci
Sub tri()
i = 2
While i < 10
If Cells(i, 7) <> 1 And Cells(i, 2) <> Cells(i + 1, 2) Or Cells(i, 3) <> Cells(i + 1, 3) Then

Rows("i:i").Select
Selection.Copy
Sheets("Feuil2").Select
Rows("i:i").Select
ActiveSheet.Paste

End If

Wend

End Sub
Commenter la réponse de bob