Microsoft 365 Déplacer une valeur dans une ligne vers la première cellule non vide vers la gauche

Fred999

XLDnaute Nouveau
Bonjour,

J'ai un petit souci dans un fichier que je suis entrain d’écrire. Je fais a partir d'excel un petit fichier texte avec des heures
que je mets dans une application de pointage mais j'ai des blancs dans mes lignes que l'application ne lis pas et mets une erreur.
Je voudrais décaler le dernier pointage (pointage de fin de travail) vers la gauche jusqu’à la première ligne non vide qu'il lis et comme cela
je n'aurais plus de ligne vide entre les pointages mais je bloque sur la fonction à utiliser.
Je sectionne ma plage avec
Range("D1").Select (première cellule avec un pointage)
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select (je sélectionne toutes les plages avec des pointages + les blanc)
Mais ensuite est ce que je dois utilisé Décaler (Offset) mais comment trouver la cellule non vide et déplacer le dernier pointage vers la gauche?
Si vous avez une idée, en dessous mon fichier avec les cellules vide:)
Merci d'avance pour votre aide.
1576607691272.png
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Si on veut déplacer les valeurs sans supprimer de cellules, essayez:
Remplacez Selection par la plage de voutre choix.
VB:
Sub Test()
Dim t, i&, j&, n&
   t = Selection.Value
   For i = 1 To UBound(t)
      n = 0
      For j = 1 To UBound(t, 2)
         If t(i, j) <> "" Then: n = n + 1: t(i, n) = t(i, j)
      Next j
      For j = n + 1 To UBound(t, 2): t(i, j) = Empty: Next
   Next i
   Selection = t
End Sub
 

Fred999

XLDnaute Nouveau
Bonjour,
Merci beaucoup pour le code.
J'ai juste un souci, quand je mets une plage il met la valeur dans une cellule complètement en dehors du tableau.
Je n'utilise surement pas bien le code ( je ne suis pas un pro du VBA :))
En faite est qu'il est possible de sélectionné une plage commençant en K1 et qui prend toutes les cellules après jusqu’à Z
En général j'utilise
Range("K1").Select (première cellule avec un pointage)
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select et toute mes cellules sont prises.
Car par exemple sur le 53 le 14:00 je dois le déplacer de Z à T en gardant le format texte car avec le code quand l'heure est déplacé il met le format nombre.
Si c'est possible évidement sinon ce n'est pas grave j'essayerai autre chose :)
Un grand merci tout de même pour votre temps et le code qui est super :)

Bonne journée à vous,
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 165
Messages
2 085 880
Membres
103 009
dernier inscrit
dede972