Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/12/2011, 15h53   #1
Membre habitué
 
Homme christian
retraite
Inscription : avril 2010
Messages : 310
Détails du profil
Informations personnelles :
Nom : Homme christian
Âge : 56
Localisation : Espagne

Informations professionnelles :
Activité : retraite
Secteur : Industrie

Informations forums :
Inscription : avril 2010
Messages : 310
Points : 109
Points : 109
Par défaut Mise en forme apres insersion fichier txt

Bonjour
Je souhaiterais faire une mise en forme d'un fichier text insere dans excel
1- supprimer les 7 premieres lignes
2- supprimer les colonnes B,D,E,F,G,H,I,J,L,M,O,P,Q,R,S,T,U,V,W,X,Y,ET Z
3- supprimer 1 lignes sur deux, a partir de la ligne 2, c'est a dire 2,4,6,8, etc
une fois cela effectue couper en colonne F les 2 premiers caracteres et le 9 derniers ou ne conserver que 4 caracteres, c'est a dire TT 7101 (Bah2202),ne garder que 7101.
4- deplacer la colonne E en A puis D en B
j'ai cette manip a effectuer sur au 50 fichiers d'ou ma demande.
Pour supprimer les colonnes j'ai essayer avec l'enregistreur de macros, mais pour le reste je ne sais pas faire
merci
cris
chris09300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 16h55   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Essaie la macro suivante. Note que, pour le dernier point, lorsque tu déplaces la colonne E en A, la colonne D devient la colonne E. C'est elle-ci que j'ai déplacé devant la colonne B (ex colonne A) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub test1()
    Dim Cols, c As Range, i As Long
    Cols = Array("B", "D", "E", "F", "G", "H", "I", "J", "L", "M", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z")
    With Sheets("Feuil1")
        .Range("1:7").Delete
        For i = 26 To 1 Step -1
            If IsNumeric(Application.Match(Left(.Cells(1, i).Address(0, 0), 1), Cols, 0)) Then
                .Columns(i).Delete
            End If
        Next i
        For i = .Cells(.Rows.Count, 1).End(xlUp).Row To 3 Step -1
            If Application.IsEven(i) Then
                .Rows(i).Delete
            End If
        Next i
        For Each c In .Range(.[F1], .Cells(.Rows.Count, 6).End(xlUp))
            txt = Mid(c.Value, 4, 4)
            c.Value = Mid(c.Value, 4, 4)
        Next c
        Columns(5).Cut
        Columns(1).Insert
        Columns(5).Cut
        Columns(2).Insert
    End With
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 17h30   #3
Membre habitué
 
Homme christian
retraite
Inscription : avril 2010
Messages : 310
Détails du profil
Informations personnelles :
Nom : Homme christian
Âge : 56
Localisation : Espagne

Informations professionnelles :
Activité : retraite
Secteur : Industrie

Informations forums :
Inscription : avril 2010
Messages : 310
Points : 109
Points : 109
merci a toi
j'aimerais une petite explication, car a ce niveau le resultat est de 3 caracteres et non 4

Code :
1
2
3
4
        For Each c In .Range(.[F1], .Cells(.Rows.Count, 6).End(xlUp))
            txt = Mid(c.Value, 4, 4)
            c.Value = Mid(c.Value, 4, 4)
        Next c
chris09300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 17h45   #4
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Il doit y avoir des espaces en trop ou en moins quelque part...
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 17h53   #5
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Effectivement, le "TT 7101 m'a trompé. Tu as dit vouloir conserver uniquement 7101, ce qui fait que j'ai éliminé les 3 premiers caractères. Rectifie comme suit (la ligne 2 étant inutile) :

Code :
1
2
3
        For Each c In .Range(.[F1], .Cells(.Rows.Count, 6).End(xlUp))
            c.Value = Mid(c.Value, 3, 4)
        Next c
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 18h01   #6
Membre habitué
 
Homme christian
retraite
Inscription : avril 2010
Messages : 310
Détails du profil
Informations personnelles :
Nom : Homme christian
Âge : 56
Localisation : Espagne

Informations professionnelles :
Activité : retraite
Secteur : Industrie

Informations forums :
Inscription : avril 2010
Messages : 310
Points : 109
Points : 109
j'avais oublie une colonne AB apres Z j'ai AA et AB et je veux supprime AB
toujours meme probleme
7101(Bah2202),ne garder que 7101.
cris
chris09300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 19h53   #7
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Citation:
TT 7101 (Bah2202)
?

C'est devenu :

Citation:
7101(Bah2202)
On garde les 4 premiers caractères. Sinon, pour la colonne AB :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub test1()
    Dim Cols, c As Range, i As Long
    Cols = Array("B", "D", "E", "F", "G", "H", "I", "J", "L", "M", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z")
    With Sheets("Feuil1")
        .Range("1:7").Delete
        For i = 28 To 1 Step -1
            If IsNumeric(Application.Match(Left(.Cells(1, i).Address(0, 0), 1), Cols, 0)) Or _
            i = 28 Then
                .Columns(i).Delete
            End If
        Next i
        For i = .Cells(.Rows.Count, 1).End(xlUp).Row To 3 Step -1
            If Application.IsEven(i) Then
                .Rows(i).Delete
            End If
        Next i
        For Each c In .Range(.[F1], .Cells(.Rows.Count, 6).End(xlUp))
            txt = Mid(c.Value, 4, 4)
            c.Value = Left(c.Value, 4)
        Next c
        Columns(5).Cut
        Columns(1).Insert
        Columns(5).Cut
        Columns(2).Insert
    End With
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h42.


 
 
 
 
Partenaires

Hébergement Web