Copie la valeur d'une cellule jusqu'à la valeur différente

dadi -  
 dadi -
Bonjour,

Je reviens vers vous car je suis bloqué sur une macro

Je souhaiterais copier la valeur d'une cellule dans les cellules suivantes de la même colonne jusqu'à ce que sa valeur change, et refaire le même travail pour le reste des valeur

Exemple :

TRAVAIL RESULTAT SOUHAITE
1 1
1
1
1 1
2 2
2
2
2
2
2 2
3 3
3
3 3

Entre 1 et 1 il ya des cellules vides, je veux les remplir par 1
ensuite les cellules vides entre le nombre 2 , les remplir par 2
et ainsi de suite

Merci de votre aide

2 réponses

  1. Zawarudio Messages postés 16 Statut Membre 1
     
    Je n'ai pas vraiment compris votre exemple (notamment avec les chiffres doublés du style "1 1" qui deviennent "1")

    Mais voici une base de travail, si c'est sur ça que vous avez un problème

    Sub test()
    Dim i As Integer
    Dim s As String

    'boucler jusqu'à la cellule ou l'on veut s'arrêter
    'Note: Je pars du principe que la première cellule est remplie
    'Sinon, il faudra décommenter la prochaine ligne
    's = "A"
    For i = 1 To 20
    If (ActiveSheet.Cells(i, 1).Value <> "") Then
    s = ActiveSheet.Cells(i, 1).Value
    Else
    ActiveSheet.Cells(i, 1).Value = s
    End If
    Next i
    End Sub

    1
    1. dadi
       
      Merci de votre réponse.
      Dans la colonne A, j'ai des références clients :
      A1 = Références clients
      A2 = 1000
      A3=vide
      A4=vide
      A5=1000
      A6=2000
      A7=vide
      A8=2000

      Je veux remplir A3 A4 avec 1000 , et A7 avec 2000
      Donc le morceau de code que je cherche va vérifier A2 avec la cellule d'en bas si c'est vide alors il me met le valeur de A2, et s'il y a un changement de valeur , il prend cette nouvelle valeur et il applique le même travail pour le reste des cellules.
      0
      1. Zawarudio Messages postés 16 Statut Membre 1 > dadi
         

        Sub test()
        Dim i As Integer 'variable pour la boucle
        Dim s As String 'variable pour stocker la dernière valeur connue

        'Un exemple de boucle, cela dépends entièrement de votre besoin de travail
        'Par exemple, si vous voulez mettre un "FIN" dans une cellule et que vous voulez vous arreter la, ça serait
        'i = 1
        'while Activesheet.Cells(i,1).value <> "FIN"
        ' Code...
        ' i = i + 1
        'Wend
        For i = 1 To 20
        'Si la cellule n'est pas vide, on stocke la valeur de cette cellule
        If (ActiveSheet.Cells(i, 1).Value <> "") Then
        s = ActiveSheet.Cells(i, 1).Value

        'Si la cellule est vide, on mets la valeur stockée dans la cellule
        Else
        ActiveSheet.Cells(i, 1).Value = s
        End If
        Next i
        End Sub



        Exécution :
        A1 = Références clients -> s = "Références clients"
        A2 = 1000 -> s = "1000"
        A3=vide -> A3 = s (1000)
        A4=vide -> A4 = s
        A5=1000 -> s = "1000"
        A6=2000 -> s = "2000"
        A7=vide -> A7 = s
        A8=2000 -> s = "2000"

        Ca devrait correspondre à vos attentes après avoir adapté le code à votre Classeur.
        0
    2. dadi
       
      Merci beaucoup pour votre aide
      Ça marche à merveille
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Un exemple
    http://www.cjoint.com/c/EHBjUoHornn

    Cdlmnt
    1