XL 2019 Si cellule vide alors...on copie la cellule en regard de la colonne suivante

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

thespeedy20

XLDnaute Occasionnel
Bonjour à tous

J'ai un tableau avec des noms comme celui-ci

Tab1.JPG


et j'aimerais que le tableau soit comme celui-ci

Tab2.JPG


Je parviens à transférer les noms de la nom1 et pour le reste je cale....

Merci pour votre aide

OLi
 

Pièces jointes

Bonsoir @thespeedy20,

Un essai dans le fichier joint.
VB:
Sub col_vide()
Dim t, i&, j&, k&

   t = Range("a1:c10")
   For i = 2 To UBound(t)
      For k = 1 To UBound(t, 2)
         If t(i, k) = "" Then Exit For
      Next k
      For j = k + 1 To UBound(t, 2)
         If t(i, j) <> "" Then t(i, k) = t(i, j): t(i, j) = "": k = k + 1
      Next j
   Next i
   Range("a1:c10") = t
End Sub
 

Pièces jointes

Salut @soan 🙂

Dans ta version, tu décales toutes les cellules d'une ligne modifiant ainsi la structure des colonnes après le tableau à compacter.

Si on accepte les décalages des colonnes à droite du tableau à traiter, le code se simplifie :
VB:
Sub col_vide()
   Application.ScreenUpdating = False: On Error Resume Next
   Range("a2:c12").SpecialCells(xlCellTypeBlanks).Delete shift:=xlShiftToLeft
End Sub
 
salut mapomme,

je n'ai d'abord pas compris ton « modifiant ainsi la structure des colonnes
après le tableau à compacter » ; puis j'ai compris que « après », c'est :
« à droite » ; or le tableau de droite, en F1:H10, n'est qu'un exemple du
résultat qui est à obtenir ; normalement, il n'est pas là ; et si tu ouvres
le fichier Excel que j'ai joint dans mon post #4, tu verras que j'ai tout
simplement supprimé ce tableau. (j'ai supprimé aussi la zone de texte)

le plus important : j'ai ajouté un prénom en C12 ; et y'a rien à gauche :
ni en B12, ni en A12 ; ma sub marche aussi si y'a une ligne vide,
comme la ligne 11 ; note bien que même avec cette ligne vide,
ça fait le job jusqu'à la ligne 12, sans s'arrêter en ligne 10.

alors, ton avis ? c'est pas mal, non ? 😉


soan
 
Dernière édition:
Bonsoir le fil (et un particulier aux connaissances)

Issu de naguère
VB:
Sub Tri_Gauche_Droite()
Dim i As Long
Application.ScreenUpdating = False
t = Timer()
'tri les données lignes par lignes de la gauche vers la droite
With Range(Cells(2, 1), Cells(Rows.Count, 3).End(3))
    For i = 1 To .Rows.Count
    .Cells(i, 1).Resize(, 3).Sort Key1:=.Cells(i, 1), Order1:=2, Orientation:=xlLeftToRight
    Next
End With
MsgBox Timer - t
End Sub
Pour le jadis, c'était ici
 
Bonsoir mapomme,

Non, je m'amuse à retrouver les fils où je peux tester la différence entre mes 4Go de jadis et mes 8Go de maintenant.
Et si sur la route, je peux aider mon prochain en croisant des vieux de la vieille, alors youpi. 😉

PS: Pendant le confinement, le couvre-feu perdure-t-il?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
420
Réponses
17
Affichages
516
Réponses
7
Affichages
376
Retour