Supprimer Colonne plutôt que ligne
erudess
-
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Et merci d'avance à ceux qui prendront la peine de s'intéresser à mon problème.
Voila j'ai adapter un petit code vba pour pouvoir sélectionner et supprimer des cellules vides dans mes fichiers. Cela semble fonctionner assez bien.
Par contre en supprimant les cellules vides le programme remonte le texte moi j'aimerai qu'il ne remonte pas le texte mais qu'il le décale vers la gauche. pour pouvoir ainsi aligner tous mes textes dans la même colonne.
Vous trouverez une explication plus précise dans le fichier ci dessous
http://www.cjoint.com/c/GHzoSEaCM7A
voici le code que j'ai utilisé :
Private Sub CommandButton1_Click()
Dim p As Range, i As Long
Set p = Application.InputBox(Prompt:="Sélectionnez une plage", _
Title:=" Supprimer lignes vides", Type:=8)
With p
For i = .Cells.Count To 1 Step -1
If Application.CountA(.Cells(i)) = 0 Then _
.Cells(i).Cells.Delete
Next i
End With
End Sub
Meilleurs salutations,
Et merci d'avance à ceux qui prendront la peine de s'intéresser à mon problème.
Voila j'ai adapter un petit code vba pour pouvoir sélectionner et supprimer des cellules vides dans mes fichiers. Cela semble fonctionner assez bien.
Par contre en supprimant les cellules vides le programme remonte le texte moi j'aimerai qu'il ne remonte pas le texte mais qu'il le décale vers la gauche. pour pouvoir ainsi aligner tous mes textes dans la même colonne.
Vous trouverez une explication plus précise dans le fichier ci dessous
http://www.cjoint.com/c/GHzoSEaCM7A
voici le code que j'ai utilisé :
Private Sub CommandButton1_Click()
Dim p As Range, i As Long
Set p = Application.InputBox(Prompt:="Sélectionnez une plage", _
Title:=" Supprimer lignes vides", Type:=8)
With p
For i = .Cells.Count To 1 Step -1
If Application.CountA(.Cells(i)) = 0 Then _
.Cells(i).Cells.Delete
Next i
End With
End Sub
Meilleurs salutations,
A voir également:
- Supprimer Colonne plutôt que ligne
- Supprimer rond bleu whatsapp - Guide
- Déplacer colonne excel - Guide
- Trier colonne excel - Guide
- Partager photos en ligne - Guide
- Supprimer une page word - Guide
6 réponses
Bonjour
Essaies ceci (sur plage sélectionnée)
Cdlmnt
Essaies ceci (sur plage sélectionnée)
Option Explicit Option Base 1 Public Sub OK() Dim plage As Range, li As Long, co As Long, nbli As Long, nbco As Long Dim tplage(), lt As Long Dim codeb As Long, cofin As Long Set plage = Selection nbli = plage.Rows.Count nbco = plage.Rows.Count lt = 1 ReDim tplage(1 To nbli, 1 To nbco) For li = 1 To nbli For co = 1 To nbco If plage.Cells(li, co) <> "" Then tplage(lt, 1) = plage.Cells(li, co).Value lt = lt + 1 Exit For End If Next co Next li plage.ClearContents plage = tplage End Sub
Cdlmnt
Bonjour Merci pour la réponse. ça semble bien fonctionner cependant je rencontre des problèmes dans les situations suivantes :
- quand il y a une seul ligne a déplacer. Elle est effacée
- quand il y a un mot dans la colonne d'a coté il est aussi éffacé
- Il y a toujours une remontée de ligne
j'ai essayé de détaillé et d'illustré le mieux possible les problèmes rencontrés dans le fichier cjoint ci dessous.
http://www.cjoint.com/c/GHAg7SXuoWS
Merci encore pour ton aide !
- quand il y a une seul ligne a déplacer. Elle est effacée
- quand il y a un mot dans la colonne d'a coté il est aussi éffacé
- Il y a toujours une remontée de ligne
j'ai essayé de détaillé et d'illustré le mieux possible les problèmes rencontrés dans le fichier cjoint ci dessous.
http://www.cjoint.com/c/GHAg7SXuoWS
Merci encore pour ton aide !
vraiment désolé ! je viens de me rendre compte que je me suis gouré dans le tableau que j'ai appelé "ce que j'aimerai faire" dans ma toute première requête c'est plutôt comme ceci que ça devrait être fait en gardant la même ligne seul la colonne change et on enlève les cellules vides
http://www.cjoint.com/c/GHAhgPxbCwS
Dsl encore
http://www.cjoint.com/c/GHAhgPxbCwS
Dsl encore
1. ton fichier est au format xltm et cjoint n'aime pas, mets le au format xlsm
2. - quand il y a une seul ligne a déplacer. Elle est effacée
effectivement, corrige comme ça
nbco = plage.Columns.Count
3. - Il y a toujours une remontée de ligne
c'est ce que tu avais fait dans ton exemple
pour le reste j'attends ton nouveau fichier
Cdlmnt
2. - quand il y a une seul ligne a déplacer. Elle est effacée
effectivement, corrige comme ça
nbco = plage.Columns.Count
3. - Il y a toujours une remontée de ligne
c'est ce que tu avais fait dans ton exemple
pour le reste j'attends ton nouveau fichier
Cdlmnt
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Essaies ceci
Cdlmnt
Option Explicit Public Sub OK() Dim plage As Range, li As Long, co As Long, nbli As Long, nbco As Long Dim tplage(), lt As Long, ct As Long Dim codeb As Long, cofin As Long Set plage = Selection nbli = plage.Rows.Count nbco = plage.Columns.Count lt = 1 ReDim tplage(1 To nbli, 1 To nbco) For li = 1 To nbli ct = 1 For co = 1 To nbco If plage.Cells(li, co) <> "" Then tplage(lt, ct) = plage.Cells(li, co).Value ct = ct + 1 End If Next co lt = lt + 1 Next li plage.ClearContents plage = tplage End Sub
Cdlmnt