macro+propager formule nbre var de lignes

  • Initiateur de la discussion hibou
  • Date de début
H

hibou

Guest
Bonjour,
Je souhaiterais, dans une macro, faire ceci :
sachant :
- un onglet contient un nombre variable de lignes (resultat d'un import de fichier texte)
- le resultat est une table pivot dynamique
- une colonne est vide pour y placer une formule
je voudrais :
- copier la formule de quelque part (ca c'est ok)
- coller cette formule dans la colonne reservee a cet effet
- MAIS seulement sur le nombre de lignes relevantes (et donc variable)
- sinon, la formule va jusque 65.000 machin et ma table pivot indique ce nombre dans la valuer N/A

une idée mais je sais pas non plus exactement comment faire, c'est de nommer le champ target avant de faire le copier/coller de la formule : comment definir un champ dont la longueur (grandeur) change a chaque execution de macro ?

Précisions :
colonne A : contient un jour
colonne B : contient un mois
colonne C : contient une année
lignes : nombre variable (car les lignes sont 'importées' de l'extérieur.
macro :
1. import des données à partir d'une source : ok
2. dans la colonne D : reconstruction d'une date complète
3. traitement : ok
c'est donc dans l'étape 2 que se pose le probleme : comment popager, dans une macro, une formule mais en se limitant au nombre de lignes effectives ?
merci de vos suggestions.
(;-)
 

CBernardT

XLDnaute Barbatruc
Bonjour Hibou et le forum,

Je te propose la macro suivante pour convertir les données des trois premières colonnes en date sur la quatrième.

Sub RasDate()
Dim Lig As Long, i As Long

Lig = Sheets('Feuil1').Range('A65536').End(xlUp).Row
With Sheets('Feuil1')
For i = 2 To Lig
.Cells(i, 4) = CDate(.Cells(i, 1) & '/' & .Cells(i, 2) & '/' & .Cells(i, 3))
.Cells(i, 4).NumberFormat = 'dd/mm/yy'
Next i
End With
End Sub

Cordialement

CBernardT

Message édité par: CBernardT, à: 18/03/2005 13:42
 
H

hibou

Guest
merci !
ca semble tres interessant.
Puis-je abuser en demandant comment faire pour les formules suivantes (ou pour toute autre formule : autrement dit, comment integrer les formules dans cette 'programmation').
Si la reponse est trop longue, des indications tutorielles peuvent suffire ...

=SUPPRESPACE(CONCATENER($H2;' ';$I2;' ';$J2;' ';$K2;' ';$L2;' ';$M2;' ';$N2;' ';$O2;' ';$P2;' ';$Q2;' ';$R2;' ';$S2;' ';$T2;' ';$U2))

=SI(NON(ESTVIDE($E2));CONCATENER('A/';$E2);SI(NON(ESTVIDE($F2));CONCATENER('E/';$F2);NA()))

=SI(OU(NON(ESTVIDE(B2));NON(ESTVIDE(C2)));CONCATENER('Vis: ';$B2;' / Dem: ';$C2);NA())

hibou
 

Abel

XLDnaute Accro
Bonjour hibou, CBernardT,

Pour insérer une formule depuis une macro ce doit être un truc du genre :

Range (TaCellule).Formula='=SI(NON(ESTVIDE($E2));CONCATENER('A/';$E2);SI(NON(ESTVIDE($F2));CONCATENER('E/';$F2);NA()))'

Ou Range(Tacellule).FormulaL1C1 en fonction du type d'adresse que tu utilises.
Regarde l'aide de VB avec ces mots clés.

Ensuite, reste à régler la recopie de fonction le cas échéant.

En espérant que cela te dépanne.

Abel.
 

Discussions similaires

Réponses
9
Affichages
266

Statistiques des forums

Discussions
312 796
Messages
2 092 205
Membres
105 275
dernier inscrit
VBE