Selectionner plusieurs colonnes en macro

Snoop

XLDnaute Occasionnel
Bonjour tout le monde,

J'ai une macro qui decoupe un fichier en x fichier suivant une colonne de rupture.

La problématique est que le format date lors de la découpe est perdu et me crée des erreurs (format Fr vs format Us)

Pour pouvoir regler le probleme lors de la macro je lui changeais le format de la colonne :
Exemple Range("C:C,D:D,O:O,p:p").NumberFormat = "0"
Et ensuite une fois que le fichier est crée : Range("C:C,D:D,O:O").NumberFormat = "m/d/yyyy"

--> ce patch est bien à condition de connaitre les colonnes à l'avance.

Donc j'ai essayer de créer un autre patch qui reconnait le format date pour le changer
et j'ai une erreur

-----
La macro
Sub test_date()

Dim col_der As Integer
Dim maj_date As String
Dim a As Integer

col_der = Range("IV1").End(xlToLeft).Column 'Derniere colonne



For Each cell In Range(Cells(2, 1), Cells(2, col_der))

If cell.NumberFormat = "yyyy-mm-dd" Then
a = cell.Column
If maj_date = "" Then

maj_date = "Columns(" & a & ")"
Else
maj_date = maj_date & "," & "Columns(" & a & ")"
End If
End If
Next

Range(maj_date).NumberFormat = "0"


End Sub

----->
L'erreur se trouve sur la dernière ligne --> si une personne à une idée pour garder en memoire les colonnes pour changer le format un fois à 0 et l'autre en date.

Merci
 

Pierrot93

XLDnaute Barbatruc
Re : Selectionner plusieurs colonnes en macro

Bonjour,

essaye peut être ceci, attention au format des dates que tu testes...
Code:
Option Explicit
Sub test_date()
Dim col_der As Integer, cell As Range, plage As Range
col_der = Range("IV2").End(xlToLeft).Column 'Derniere colonne
For Each cell In Range(Cells(2, 1), Cells(2, col_der))
    If cell.NumberFormat = "yyyy-mm-dd" Then
        If plage Is Nothing Then Set plage = Columns(cell.Column) Else _
            Set plage = Union(plage, Columns(cell.Column))
    End If
Next
plage.NumberFormat = "0"
End Sub

bon après midi
@+
 

Snoop

XLDnaute Occasionnel
Re : Selectionner plusieurs colonnes en macro

EN faite cela fonctionne bien pour mettre les cellules à 0, mais lorsque je crée un nouveau fichier et je veux lui affecter la nouvelle mise en page :

plage.NumberFormat = "d/m/yyyy"

Il me fait la correction sur l'ancien fichier et non le nouveau ?

alors que sur le principe sur je lui donne une formule
Range("C:C,D:D,O:O").NumberFormat = "m/d/yyyy" --> il me fait bien la maj sur le nouveau fichier.

Comment lui faire comprendre qu'il doit appliquer la maj sur les mêmes colonnes mais dans un autre fichier ?

Merci pour votre aide
 

Pierrot93

XLDnaute Barbatruc
Re : Selectionner plusieurs colonnes en macro

Re,

essaye ceci, nom du classeur et de la feuille à adapter, le classeur doit être ouvert :
Code:
Workbooks("NomClasseur.xls").Sheets("NomFeuille").Range(plage.Address).NumberFormat = "m/d/yyyy"
bonne soirée
@+
 

Snoop

XLDnaute Occasionnel
Re : Selectionner plusieurs colonnes en macro

En faite dans la macro je ne lui donne pas de nom au fichier tant que je ne l'enregistre pas
je commence par un "Workbooks.Add"
la copie de la partie et ensuite j'enregistre sous --> je n'ai donc pas le nom du classeur
sauf a enregistrer deux fois ce qui me semble lourd (question temps)
@+
 

Pierrot93

XLDnaute Barbatruc
Re : Selectionner plusieurs colonnes en macro

Re,

pas vu ton code entièrement, mais comment tu l'utilises.... si c'est le classeur active tu peux utiliser "ActiveWorkbook" en lieu et place de "Workbooks("NomClasseur.xls")"... sinon utiliser une variable objet lors de la création du classeur....
 

Discussions similaires

Statistiques des forums

Discussions
312 425
Messages
2 088 291
Membres
103 808
dernier inscrit
qsfdhqzsfg