Copier / coller avec condition

Résolu
saadiil1 Messages postés 31 Statut Membre -  
saadiil1 Messages postés 31 Statut Membre -
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

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    0
    1. ccm81 Messages postés 11033 Statut Membre 2 434
       
      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
      0
  2. saadiil1 Messages postés 31 Statut Membre
     
    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
    0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    0
  4. saadiil1 Messages postés 31 Statut Membre
     
    non non excuse moi , j été con hh . ça marche impec

    merci bcp
    0