Bonjour à tous,

Je viens vers vous car je dois surement passer à coté d'un élément essentiel pour que ce code VBA simple fonctionne :

Ce code à pour but de remonter les informations d'un tableau de manière à les avoir les unes à la suite des autres comme montré sur l'image ci-dessous.
Il m'est interdit, même si c'est plus simple, de supprimer les lignes vide dans mon cahier des charge.

Pièce jointe 360732

La seule Ligne de code qui me pose problème est lorsque je souhaite coller la découpe précédemment faite. J'ai essayé plusieurs méthodes mais rien a faire, l'opération de découpe se fait mais pas de collage.

En espérant avoir mis ce poste au bon endroit du forum, pourriez vous m'aider à comprendre ce qu'il me manque s'il vous plait ?


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Sub Ma_boucle_de_Tri()
 
    Dim x As Integer
    x = 2
    Dim y As Integer
    y = 0
    Dim z As Integer
    z = 28
 
    With Worksheets("Feuille1")
 
    For x = 2 To 28
    'De la ligne 2 à la ligne 28
        If IsEmpty(Cells(x, 3).Value) = True Then
        'Si la cellule testée est vide alors :
            y = x + 2
            z = z + 2
            .Range("C" & y & ":D" & z).Cut
            'Couper tout ce qui se trouve en dessous de la cellule testée jusqu'à la case 28
            y = y - 2
            z = z - 2
            .Range("C" & y & ":D" & z).PasteSpecial Paste:=xlPasteValues
            'Coller la valeur des cellules à partir de la cellule précédemment testée vide. ***C'est là que se trouve mon problème***
            y = y + 2
            z = z + 2
            'Remettre les variables aux mêmes valeurs qu'au départ de la boucle IF
        End If
        x = x + 1
    Next x
    'On recommence l'opération deux ligne en dessous jusqu'à ce que l'on atteigne la ligne 28
 
    End With
 
End Sub