Créer une macro

bob -  
 bob -
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

3 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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

    0
    1. bob
       
      https://www.cjoint.com/c/IAiskulugsh
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > 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.
        0
    2. bob
       
      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.
      0
    3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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
      
      0
    4. bob
       
      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
      0
  2. bob
     
    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
    0
  3. bob
     
    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
    0