OVH Cloud OVH Cloud

Mon code est limité

1 réponse
Avatar
Patrick Dupin
Bonjour.
1 - Après avoir extrait d'un fichier texte des données dont les séparateurs
sont "\", je colle dans mon classeur ces données.

2 -Puis j'actionne ma macro dont le code a été créé par enregistrement "en
direct".

Le but de cette macro est de transformer les données.
Je réussi très bien cette manipulation avec un fichier qui aujourd'hui a ses
limites(527 lignes). Ce qui est normal, car je sélectionne en enregistrant
manuellement mes colonnes. Or dès que mon fichier est plus volumineux, ça ne
peut évidemment plus fonctionner
J'aimerai que mon fichier puisse fonctionner avec une quantité de données
nettement supérieure et dont je ne connais pas le nombre.
Plus précisemment, cette macro doit transformer des numéros de licence (9
chiffres) en numéro de dossard de 5 à 6 chiffres selon le cas. Puis de
modifier l'emplacemnt des colonnes. La macro s'arrête ici

3- | Ceci dans un autre but, faire un nouveau copier et enfin l'incorporer
dans un autre fichier EXCEL de
| gestion de CROSS qui celui étant très complexe par toutes ses macros
ne peut être modifié.
| Cette opération est faite manuellement.

Vous trouverez mon fichier sur ce lien.

http://cjoint.com/?llk1co7x8c
En vous remerciant,pour pour votre aide
Bon week-end à tous
Patrick

1 réponse

Avatar
Herdet
Bonjour Patrick,
Tu peux remplacer ton code :
------------------------------------------------------------
'Création de la catégorie
Range("I2").Select
ActiveCell.FormulaR1C1 = _
"=IF(OR(RC[-5]=""BG"",RC[-5]=""BF""),RC[-5]&""
""&RIGHT(VLOOKUP(ANNEE_CROSS-YEAR(RC[-4]),Cat,2,FALSE)),RC[-5])"
'Création du NUMERO de DOSSARD
Range("J2").Select
ActiveCell.FormulaR1C1 = _
"=(VLOOKUP(LEFT(RIGHT(RC[-9],7),3)*1,NUMACA,3,FALSE)&RIGHT(RC[-9],4))*1"
Range("I2:J2").Select
Selection.AutoFill Destination:=Range("I2:J527")
Range("I2:J527").Select
'Sélection et COPIE avec collage spécial de la catégorie en D
Range("I2").Select
Selection.AutoFill Destination:=Range("I2:I527")
Range("I2:I527").Select
Selection.Copy
Range("D2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Application.CutCopyMode = False
----------------------------------------------------------------------------------------------

par le code suivant :
'Création de la catégorie
' Pour info : n = dernière ligne occupée de la colonne A des N° de
licences
' n = Range("A20000").End(xlUp).Row

Range("I2:I" & Range("A20000").End(xlUp).Row).FormulaR1C1 = _
"=IF(OR(RC[-5]=""BG"",RC[-5]=""BF""),RC[-5]&""
""&RIGHT(VLOOKUP(ANNEE_CROSS-YEAR(RC[-4]),Cat,2,FALSE)),RC[-5])"
Range("J2:J" & Range("A20000").End(xlUp).Row).FormulaR1C1 = _
"=(VLOOKUP(LEFT(RIGHT(RC[-9],7),3)*1,NUMACA,3,FALSE)&RIGHT(RC[-9],4))*1"

Cordialement
Robert

"Patrick Dupin" a écrit dans le message de news:
43746adf$0$25968$
Bonjour.
1 - Après avoir extrait d'un fichier texte des données dont les
séparateurs sont "", je colle dans mon classeur ces données.

2 -Puis j'actionne ma macro dont le code a été créé par enregistrement "en
direct".

Le but de cette macro est de transformer les données.
Je réussi très bien cette manipulation avec un fichier qui aujourd'hui a
ses limites(527 lignes). Ce qui est normal, car je sélectionne en
enregistrant manuellement mes colonnes. Or dès que mon fichier est plus
volumineux, ça ne peut évidemment plus fonctionner
J'aimerai que mon fichier puisse fonctionner avec une quantité de données
nettement supérieure et dont je ne connais pas le nombre.
Plus précisemment, cette macro doit transformer des numéros de licence (9
chiffres) en numéro de dossard de 5 à 6 chiffres selon le cas. Puis de
modifier l'emplacemnt des colonnes. La macro s'arrête ici

3- | Ceci dans un autre but, faire un nouveau copier et enfin l'incorporer
dans un autre fichier EXCEL de
| gestion de CROSS qui celui étant très complexe par toutes ses macros
ne peut être modifié.
| Cette opération est faite manuellement.

Vous trouverez mon fichier sur ce lien.

http://cjoint.com/?llk1co7x8c
En vous remerciant,pour pour votre aide
Bon week-end à tous
Patrick