Copier / coller avec condition

Résolu
Bonjour tout le monde ;
je suis debutant en Vba et j 'ai besoin de faire une macro qui permet de faire copier coller avec condition :

En fait j'ai ma col A de la Feuil1 qui contient les articles :
exemple :
colA
Article1
Article1
Article1
Article2
Article2
Article3
Article4
Article4
.
.
je veux faire une macro qui permet de copier "Article1" dans la cellule (1:1) de la Feuil2cdu classeur , et puis elle compare la cellule (1:1) de Feuil1 (celle qu'on déjà copier dans A(1:1) de la Feuil2 ) avec les autres cellules de la meme colonne (col des artcles) une fois un autre article rencontré ,elle le copier pour le coller dans la cellule (5:1) de la feuil2 .........

exemple de resultat voulue :
Feuil2 ;
Cellule (1:1) -----> Article1
cellule(5:1) ------> Article2
cellule(10:1) -----> Article3
cellule (15:1) ----> Article4
Cellule (20:1) ---> Article4
.
.
.
.
.
Merci bcp de votre aide

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. non non excuse moi , j été con hh . ça marche impec

    merci bcp
    1. re

      es tu sur d'avoir transposé correctement le code
      un lien vers un exemple qui fonctionne

      http://www.cijoint.fr/cjlink.php?file=cj201103/cijoIoOgSW.xls

      bonne suite
      1. Merci
        ccm81 pour ta réponse , maleureusement ça ne marche pas en fait elle copie just la première cellule de la feuil1 (A1) et elle la colle dans la cellule A1 de la feuil2 c'est tt .

        rq : il n 'est aucune erreur

        je ne comprent pas pourquoi ça ne marche pas

        Merci
        1. bonjour

          quelque chose comme ça devrait aller

          Option Explicit
          
          Private Sub CommandButton1_Click()
          Const limin1 = 1
          Const co1 = 1
          Const li2 = 1
          Const comin2 = 1
          Dim limax1 As Long, li1 As Long, nbart1 As Long
          Dim art1
          Dim co2 As Long
          limax1 = Sheets(1).Range("A1").End(xlDown).Row
          art1 = Sheets(1).Cells(1, 1).Value
          nbart1 = 1
          Sheets(2).Cells(li2, comin2).Value = art1
          For li1 = limin1 + 1 To limax1
            If Sheets(1).Cells(li1, co1).Value <> art1 Then
              art1 = Sheets(1).Cells(li1, co1).Value
              nbart1 = nbart1 + 1
              Sheets(2).Cells(li2, 5 * (nbart1 - 1)).Value = art1
            End If
          Next li1
          End Sub

          RQ. modifier les constantes selon les besoins

          bonne suite
          1. desolé, j'ai mal lu et confondu les lignes et les colonnes

            Option Explicit
            
            Private Sub CommandButton1_Click()
            Const limin1 = 1
            Const co1 = 1
            Const limin2 = 1
            Const co2 = 1
            Dim limax1 As Long, li1 As Long, nbart1 As Long
            Dim art1
            limax1 = Sheets(1).Range("A1").End(xlDown).Row
            art1 = Sheets(1).Cells(1, 1).Value
            nbart1 = 1
            Sheets(2).Cells(limin2, co2).Value = art1
            For li1 = limin1 + 1 To limax1
              If Sheets(1).Cells(li1, co1).Value <> art1 Then
                art1 = Sheets(1).Cells(li1, co1).Value
                nbart1 = nbart1 + 1
                Sheets(2).Cells(5 * (nbart1 - 1), co2).Value = art1
              End If
            Next li1
            End Sub