OVH Cloud OVH Cloud

suppression cellule vers la gauche

4 réponses
Avatar
patrick.lyon
bonjour
j'ai un petit soucis sur un gros fichier
je récupere une base de donnée en format txt
je la convertie dans excel avec séparateur TAB
le pb c'est que certains champs texte on eux meme des TAB a l'intérieur
ça me met donc la zone
j'ai réussi a obtenir dans une colonne d'excel le nombre de TAB en
trop.

ce que j'aimerais faire c'est une moulinette qui partirait de la
derniere ligne du tableau (25000 lignes) en colonne 60 et qui
supprimerait x cellules de la ligne courante avec décalage des cellules
sur la gauche et qui ensuite passerait a la ligne précédente

en résumé, dans la ligne courante si la cellule = 1 on ne fais rien, si
elle est égale a 2
on supprime 2-1 cellule a droite de la cellule (suppression décaler a
gauche)
si = 3 on supprime 3-1 cellules et ainsi de suite jusqu'en haut du
tableau

si vous avez des idées de syntax , j'ai un peu de mal

à+

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com

4 réponses

Avatar
Denis Michon
Bonjour Patrick,

La colonne 60 correspond à l'adresse : Colonne BH


Exemple : Ligne BH1
Si la valeur dans cette colonne est 3, 2 cellules sont à supprimer. Indique clairement quelles cellules sur cette ligne
devraient être supprimé. Est-ce toujours le même pattern ?


Salutations!




"patrick.lyon" a écrit dans le message de news:
bonjour
j'ai un petit soucis sur un gros fichier
je récupere une base de donnée en format txt
je la convertie dans excel avec séparateur TAB
le pb c'est que certains champs texte on eux meme des TAB a l'intérieur
ça me met donc la zone
j'ai réussi a obtenir dans une colonne d'excel le nombre de TAB en
trop.

ce que j'aimerais faire c'est une moulinette qui partirait de la
derniere ligne du tableau (25000 lignes) en colonne 60 et qui
supprimerait x cellules de la ligne courante avec décalage des cellules
sur la gauche et qui ensuite passerait a la ligne précédente

en résumé, dans la ligne courante si la cellule = 1 on ne fais rien, si
elle est égale a 2
on supprime 2-1 cellule a droite de la cellule (suppression décaler a
gauche)
si = 3 on supprime 3-1 cellules et ainsi de suite jusqu'en haut du
tableau

si vous avez des idées de syntax , j'ai un peu de mal

à+

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Avatar
Denis Michon
Bonjour Patrick

voici un exemple de procédure :

PREND SOIN DE TE FAIRE UNE COPIE DE SAUVEGARDE !

Selon que tu veuilles supprimer les colonnes en partant de A vers la droite
'c.Offset(, -59).Resize(, A).Delete xlToLeft

selon que tu veuille supprimer les colonnes en partant de Bh vers la gauche
c.Offset(, -A).Resize(, Abs(A)).Delete xlToLeft

active l'une ou l'autre ligne de code et place une apostrophe devant la ligne de code inutilisée.


'-----------------------
Sub Supprimer()

Dim Rg As Range, A As Integer
With Worksheets("Feuil1")
Set Rg = .Range("A1:A" & .Range("A65536") _
.End(xlUp).Row).Resize(, 60)
End With

Application.ScreenUpdating = False
For Each c In Rg.Columns(60).Cells
A = c - 1
If A > 0 Then
'en partant de la colonne A
'c.Offset(, -59).Resize(, A).Delete xlToLeft
'En partant de la colonne Bh vers la gauche
c.Offset(, -A).Resize(, Abs(A)).Delete xlToLeft

End If
Next

Set Rg = Nothing

End Sub
'-----------------------


Salutations!



"patrick.lyon" a écrit dans le message de news:
bonjour
j'ai un petit soucis sur un gros fichier
je récupere une base de donnée en format txt
je la convertie dans excel avec séparateur TAB
le pb c'est que certains champs texte on eux meme des TAB a l'intérieur
ça me met donc la zone
j'ai réussi a obtenir dans une colonne d'excel le nombre de TAB en
trop.

ce que j'aimerais faire c'est une moulinette qui partirait de la
derniere ligne du tableau (25000 lignes) en colonne 60 et qui
supprimerait x cellules de la ligne courante avec décalage des cellules
sur la gauche et qui ensuite passerait a la ligne précédente

en résumé, dans la ligne courante si la cellule = 1 on ne fais rien, si
elle est égale a 2
on supprime 2-1 cellule a droite de la cellule (suppression décaler a
gauche)
si = 3 on supprime 3-1 cellules et ainsi de suite jusqu'en haut du
tableau

si vous avez des idées de syntax , j'ai un peu de mal

à+

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Avatar
patrick.lyon
merci
je suis en train de tester
en fait je part de la colonne BH et je supprime les colonnes à droite
donc je test avec les infos que tu me donnes

"Denis Michon" a exposé le 07/11/2003 :
Sub Supprimer()

Dim Rg As Range, A As Integer
With Worksheets("Feuil1")
Set Rg = .Range("A1:A" & .Range("A65536") _
.End(xlUp).Row).Resize(, 60)
End With

Application.ScreenUpdating = False
For Each c In Rg.Columns(60).Cells
A = c - 1
If A > 0 Then
'en partant de la colonne A
'c.Offset(, -59).Resize(, A).Delete xlToLeft
'En partant de la colonne Bh vers la gauche
c.Offset(, -A).Resize(, Abs(A)).Delete xlToLeft

End If
Next

Set Rg = Nothing

End Sub


--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com

Avatar
patrick.lyon
c.Offset(, 1).Resize(, A).Delete xlToLeft
a l'air de me convenir
merci Denis

"patrick.lyon" vient de nous annoncer :
merci
je suis en train de tester
en fait je part de la colonne BH et je supprime les colonnes à droite
donc je test avec les infos que tu me donnes

"Denis Michon" a exposé le 07/11/2003 :
Sub Supprimer()

Dim Rg As Range, A As Integer
With Worksheets("Feuil1")
Set Rg = .Range("A1:A" & .Range("A65536") _
.End(xlUp).Row).Resize(, 60)
End With

Application.ScreenUpdating = False
For Each c In Rg.Columns(60).Cells
A = c - 1
If A > 0 Then
'en partant de la colonne A
'c.Offset(, -59).Resize(, A).Delete xlToLeft
'En partant de la colonne Bh vers la gauche
c.Offset(, -A).Resize(, Abs(A)).Delete xlToLeft

End If
Next

Set Rg = Nothing

End Sub



--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com