macro+propager formule nbre var de lignes

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
(;-)
 
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
 
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
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
118
Réponses
22
Affichages
1 K
Réponses
5
Affichages
147
Retour