Remonter valeurs colonnes

Bonjour,

Je cherche un algo permettant de remonter les valeurs d'une colonne si il y a des cases vides .

Pour l'instant j'ai réussi à coder un algo qui fonctionne. Son principe c'est de relever les valeurs de la colonnes et de les marquer à la colonne 30. Après il met cette nouvelle colonne à la place et enlève les valeurs dont on ne veut pas sur la colonne d'origine.

Voici le code :

i = 6
'On parcourt la colonne dont on veut remonter les valeurs 
For j = 6 To O2.Range("A65000").End(xlUp).Row

'Si la case n'est pas vide on va stocker la valeur en colonne 30
If O2.Cells(j, 1).Value <> "" Then

'J'agit sur 3 colonnes en même temps d'ou le 30/31/32
'on Stocke la valeur en colonne 30

O2.Cells(i, 30).Value = O2.Cells(j, 1).Value
O2.Cells(i, 31).Value = O2.Cells(j, 2).Value
O2.Cells(i, 32).Value = O2.Cells(j, 3).Value
'On met à zéro la valeur qu'on vient de stocker
O2.Cells(j, 1).Value = ""
O2.Cells(j, 2).Value = ""
O2.Cells(j, 3).Value = ""

i = i + 1

End If

Next
'on regarde la taille de la nouvelle colonne 
While O2.Cells(i, 30).Value <> ""
i = i + 1
Wend

'on copie colle le tableau précédemment créée en 30 pour le mettre sur la colonne dont on voulait remettre les valeurs 
For j = 6 To i
O2.Cells(j, 1).Value = O2.Cells(j, 30).Value
O2.Cells(j, 2).Value = O2.Cells(j, 31).Value
O2.Cells(j, 3).Value = O2.Cells(j, 32).Value

'on remet à zéro les valeurs des colonnes (en colonne 30)
O2.Cells(j, 30).Value = ""
O2.Cells(j, 31).Value = ""
O2.Cells(j, 32).Value = ""
Next

'on nettoie les valeurs de la première colonne qui ne viennent pas du tableau stocké en colonne 30
For j = i + 1 To O2.Range("A65000").End(xlUp).Row

O2.Cells(j, 1).Value = ""
O2.Cells(j, 2).Value = ""
O2.Cells(j, 3).Value = ""
next

Si vous avez une autre proposition pour remonter les valeurs ou un moyen de stocker mes valeurs de façon masqué sans passer par la colonne 30 je suis preneur! Merci et bonne journée!

Bonjour,

Si j'ai bien compris le problème, cela revient à faire une suppression avec un décalage vers le haut ?

Exemple de code :

Suppression des colonnes G à J de la ligne 3, et remonte l'ensemble de ces 3 colonnes.

Range("G3:J3").Delete Shift:=xlUp

Bouben

supprimerdecalagehaut

Bonjour,

Je n'arrive toujours pas à faire fonctionner le code, j'ai adapté comme cela :

For Z = 6 To 100
'Si une case du tableau est vide 
If O2.Cells(Z, 1).Value = "" Then
'On supprime les cases et on remonte la case du dessous 
O2.Cells(Z , 1).Delete shift:=xlUp
O2.Cells(Z , 2).Delete shift:=xlUp
O2.Cells(Z , 3).Delete shift:=xlUp

End If

Next

En pj j'ai mis ce que souhaite obtenir après la macro.

Merci et bonne journée !

01

bonjour,

Avec le fichier en PJ, ce serait nettement plus simple

Merci

Bouben

En pj un fichier Excel avec mon problème, en espérant que ça soit claire.

Merci !

40classeur2.xlsm (20.62 Ko)

Avec un fichier, et un bon exemple, c'est tout de suite plus clair

Ci-joint une proposition à tester

Bouben

227remontervaleurs.xlsm (22.67 Ko)

Ca marche ! Merci beaucoup

Rechercher des sujets similaires à "remonter valeurs colonnes"