Déplacement de valeurs dans des cellules

Résolu
Bonjour SVP j'ai besoin de votre aide :

j'ai fait une macro qui me gére le passages des chaines de caractére placer dans la colonne A mais malheuresement pas comme il faut :

en faite moi j'ai la ligne 7 ce remplie automatique la cellule M15 prend la valeur 53 et aprés 1 seconde elle l'envois a M15 et M14 recois de nouveau 53 et aisi de suite jusqu' la cellule T7

ce que je veux maintenant c'est que lorsque M14 est différente du vide que O7 recois A7 et quand M15 est differente du vide P7 recois A7 et O7 recois A8 et aisi de suite jusqua trouver une cellule vide dans la colonne A puis s'arréter

VOILA LE CODE QUE j'ai ecris mais il fonctionne pas bien

merci

2 réponses

  1. Modérateur
    Bonjour,

    1) Ton code n'apparaît pas dans ton message
    2) Je ne sais pas pour les autres mais j'ai énormément de mal à te comprendre. Ton pseudo suggère que tu n'est peut-être pas français, auquel cas tu peux peut-être t'exprimer en anglais si tu maîtrises mieux. Sinon prends ton temps et fait un effort d'expression et de clarté.

    Je vais maintenant te répondre avec ce que je pense avoir compris...
    Je comprends que ta difficulté est de savoir si la cellule en ligne 7 sur la colonne qui t'intéresse est vide.
    Pour cela tu peux utiliser le test
    if Cells(7,y).Value = "" then [...] end if

    y : la colonne considérée
    [...] correspondant au code que tu souhaites exécuter dans la structure "if"
    0
    1. merci pour ta réponse
      mais malheureusement c'est pas ce ce que je veux
      voila le code que j'ai écris pour cette parti mais il fonctionne pas bien
      essey stp de démarer le fichier en cliquant sur le boutons simulation pour voir le fonctionnement

      Sub EntreePasses()
      Dim j As Long
      Dim TUN1(2, 6) As String
      Dim m As String
      For j = 0 To 4
      If Range("O7") <> "" Then Cells(8, 20 - j) = Cells(8, 19 - j).Value
      If Range("P7") <> "" Then Cells(8, 19 - j) = Cells(8, 18 - j).Value
      If Range("Q7") <> "" Then Cells(8, 18 - j) = Cells(8, 17 - j).Value
      If Range("R7") <> "" Then Cells(8, 17 - j) = Cells(8, 16 - j).Value
      If Range("S7") <> "" Then Cells(8, 16 - j) = Cells(8, 15 - j).Value
      If Range("T7") <> "" Then Cells(8, 15 - j) = Cells(8, 14 - j).Value
      j = j + 1
      Next j
      Cells(8, 15) = Range("B5").Value
      End Sub


      https://www.cjoint.com/c/FFBkd0sj26h

      merci
      0
      1. Modérateur
        Donc si j'ai compris....
        Dans un premier temps la cellule O8 prend la valeur renseignée en A6.
        Ensuite P8 prend la valeur de O8
        Suite à cela, O8 prend la valeur en A7, Q8 prend la valeur de P8, qui prend la nouvelle valeur de O8, qui va prendre la valeur en A8, et ainsi de suite, jusqu'à ce qu'il n'y ait plus de valeur renseignées dans la colonne A ?

        Si tel est le cas, tu t'es emmêlé les pinceaux dans ton code. et il aurait plutôt cette allure-là :
        Sub EntreePasses()
        Dim j As Long
        Dim TUN1(2, 6) As String
        Dim m As String
        For j = 0 To 4
        If Range("S7") <> "" Then Cells(7, 20) = Cells(7, 19).Value
        If Range("R7") <> "" Then Cells(7, 19) = Cells(7, 18).Value
        If Range("Q7") <> "" Then Cells(7, 18) = Cells(7, 17).Value
        If Range("P7") <> "" Then Cells(7, 17) = Cells(7, 16).Value
        If Range("O7") <> "" Then Cells(7, 16) = Cells(7, 15).Value
        If Range("A" & 6 + j) <> "" Then Cells(7, 15) = Cells(6 + j, 1).Value
        Next j
        Cells(8, 15) = Range("B5").Value
        End Sub


        Les corrections apportées :
        - J'ai supposé que les tests signifiaient que tu vérifiais si la cellule précédente était remplie et que si tel était le cas, tu prenais sa valeur. Il faut donc modifier l'ordre de tes test, ainsi que les lignes concernées. (ici ligne 7)
        - Dans ton code la cellule T7 prenait la valeur de S7, puis de R7, etc. Ce qui créait un décalage. Elle n'a besoin de prendre que la valeur en S7 à chaque tour. Idem pour chaque colonne.
        - Ta colonne O va chercher ses valeurs en A6 à Ax, Tu dois donc aller regarder la ligne A6+j à chaque tour
        - Ton j s'incrémentait deux fois : une fois avec j = j+1, puis avec "next j". Pour coller à ce que tu décrivais, tu auras effcectivement besoin de la ligne j = j+1, mais pas dans une boucle qui fait elle-même varier j.
        0
      2. c'est bon merci j'ai trouver la solution merci beaucoup pour l'aide
        0
      3. Modérateur
        @BarahaouaDans ce cas, tu peux cliquer sur le bouton "résolu" en haut à gauche :)
        0