[Resolu] Copie d'une formule de cellule sur l'ensemble de la colonne en vba

jokapic

XLDnaute Junior
Bonjour le Forum ,

Hier j'avais fait un post concernant [ Macro Import/Tri/Mise en forme]
J'ai réussi a avancé comme un grand grâce à l'enregistrement de macro qui génère le code.

Et la j'ai un tout petit souci minime .
Ma macro va généré un tableau dont les données proviennent d'un fichier txt.
Ma macro vide mon fichier xls , puis fait l'import des données , convertir le tableau ( car l'import met les données sur une seul colonne donc je les défini) , puis elle fait un tri des données qui me sont inutiles , j'applique une mise en forme et la j'ai dans ma colonne I et J ( année, mois) une formule dans la case I2 et J2 que je voudrait mettre a l'ensemble de la colonne .

Donc j'ai ceci pour faire la copie de formule:

Code:
  Range("I2:J2").Select
    Selection.AutoFill Destination:=Range("I2:J3215")
    Range("I2:J3215").Select

Sauf que la je prédéfini la fin de ma ligne, alors que je voudrait quel soit variable selon le nombre de ligne qui va etre généré a la fin du tableau.

J'aimerai utilisé ce code la :

Code:
Range("I2:J2").Select
Range(Selection, Selection.End(xlDown)).Select
( mais ceci ne me copie pas la formule et je ne sais comment utilisé le Selection.AutoFill Destination.

J'espère que j'aurai été clair dans ma démarche.

Je vous remercie d'avance pour votre aide.
 
Dernière édition:

jokapic

XLDnaute Junior
Re : [HELP] Copie d'une formule de cellule sur l'ensemble de la colonne

Re Pierrot93 , le forum ,

De A a H j'ai mes données que j'ai importé de mon fichier txt , et la colonne I ( mois ) et J (Annee) sont 2 colonnes que j'ai crée.
Dans I2 j'ai :=SI(D2<>0;MOIS(D2);"")
Dans J2 j'ai :=SI(D2<>0;ANNEE(D2);"") // la colonne D contient des dates

pendant la macro , il y a tout les phase de import, suppression de ligne qui me sont pas intéressante et mise en forme du tableau ( cadre) et je voudrait mettre a la fin de ma macro le code qui me permet de copier les formule en I2 et J2 jusqu'à la limite de mon tableau ( donc une valeur variable selon le nombre de données, et non jusqu'à la fin d'un fichier excel qui peut contenir 65000 ligne).

Si cela n'est pas clair, je peux essayé de faire une copie test de mon fichier.
 

jokapic

XLDnaute Junior
Re : [HELP] Copie d'une formule de cellule sur l'ensemble de la colonne

Re ,

Non toujours pas ça d'autant que dans ta formule tu mets range("d65536") je vois pas pourquoi la colonne D est ici?
J'ai adapter avec mes colonnes mais , erreur.

ce que je disais c'est que les deux formule en I2 s'applique sur tout la colonne I ( jusqu'à la fin du tableau et non du fichier excel) et que la formule J2 s'applique sur tout la colonne J ( jusqu'à la fin du tableau et non du fichier excel).

:p
 

jokapic

XLDnaute Junior
Re : [HELP] Copie d'une formule de cellule sur l'ensemble de la colonne

ah j'ai réussi en faisant:

Range("I2:J2").Select
Selection.AutoFill Destination:=Range(Selection, Selection.End(xlDown))

le seul souci maintenant c'est qu'il ne se préoccupe pas du tableau il vas jusqu'en bas du fichier...
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : [HELP] Copie d'une formule de cellule sur l'ensemble de la colonne

Bonjour jokapic, salut Pierrot

à jokapic:

le problème est de connaitre l'étendue du tableau
la formule donnée par Pierrot prend en compte la dernière cellule remplie en colonne D
mais il se peut que ce soit la colonne A à prendre en compte
.......... et sans voir le fichier, ni Pierrot ni un autre ne pourra t'aider
Range("I2:J2").Select
Selection.AutoFill Destination:=Range(Selection, Selection.End(xlDown))

le seul souci maintenant c'est qu'il ne se préoccupe pas du tableau il vas jusqu'en bas du fichier...
ce qui est tout à fait normal puisqu'il n'y a rien en dessous des cellules I2:J2


à+
Philippe
 
Dernière édition:

jokapic

XLDnaute Junior
Re : [HELP] Copie d'une formule de cellule sur l'ensemble de la colonne

Bonjour phlaurent55 ,

Je comprends tout a fait. je vais vous joindre un fichier test le plus rapidement possible .

Merci

Edit: Voila les données a mettre dans un fichier .txt ( on peux pas joindre de fichier txt donc je savais pas comment vous fournir le doc)


Code:
  28.04.2011  123456212  28.04.2011  02.08.2011  Ap    Commentaire de test                                 012345256  12 bob  
  28.04.2011  123456212  28.04.2011  27.07.2011  Ap    Commentaire de test                                 012345252  12 bob  
  09.05.2012  123456212  09.05.2012  27.04.2012  Ap    Commentaire de test                                 012345254  12 bob
  22.07.2012  123456212  22.07.2012  12.10.2012  Ap    Commentaire de test                                 012345255  12 bob
  28.04.2011  123456212  28.04.2011  27.07.2011  Ap    Commentaire de test                                 012345257  12 bob  
  10.08.2012  123456212  10.08.2012  30.08.2012  Ap    Commentaire de test                                 012345258  12 bob

Ps: Ne pas enlever les epaces ni en debut, ni entre les chaines , sinon le tableau vas mal se remplir ( indication : il y a 2 espace en debut de chaque ligne )
Bien faire le copier , il faut juste coller dans le bloc note et les données seront bien mise

Voila le fichier xls
 

Pièces jointes

  • test_jok.xls
    23.5 KB · Affichages: 33
Dernière édition:

jokapic

XLDnaute Junior
Re : [HELP] Copie d'une formule de cellule sur l'ensemble de la colonne

Comment te dire......
Pierrot93 <3
Merci beaucoup

merci aussi a toi phlaurent55 ^^.

Est ce que je peux te demander une dernière faveur ^^.
Si tu as pris mon fichier xls et que tu as mi le code dans un bloc note et que tu a lancé la macro , tu as du t'apercevoir que la macro crée un fichier temporaire ( avec le nom du fichier importer ) .
je voudrais mettre à la place un nom a cette feuille pour ensuite la fermer .

Pour fermer une feuille , j' utilise :
Code:
 Windows([nom du fichier]).Activate
    ActiveWindow.Close

cependant mon fichier import n'aura pas tout le temps le même nom , donc j'aimerai fixer un nom a cette feuille temporaire ( la création de cette feuille ce fait a ce niveau la )

Code:
 'On récupère le fichier source .txt (cfo001.txt)
  FichierChoisi = Application.GetOpenFilename("Fichiers Txt,*.txt")
  'elle s'ouvre dans une autre feuille dont le nom sera le nom du fichier txt
  If Not FichierChoisi = False Then
    FichierActuel = ThisWorkbook.Name
    Workbooks.OpenText Filename:=FichierChoisi, DataType:=xlDelimited, Tab:=True
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : [HELP] Copie d'une formule de cellule sur l'ensemble de la colonne

Re,

si j'ai bien compris... utilise peut être une variable objet :

Code:
Dim wb As Workbook


FichierChoisi = Application.GetOpenFilename("Fichiers Txt,*.txt")
  'on l'ouvre dans une autre feuille excel tout en le copiant dans notre fichier
  If Not FichierChoisi = False Then
    FichierActuel = ThisWorkbook.Name
    Workbooks.OpenText Filename:=FichierChoisi, DataType:=xlDelimited, Tab:=True
    Set wb = ActiveWorkbook

ensuite pour l'utilisé dans ton code, par exemple pour le fermer :
Code:
wb.Close False
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 184
dernier inscrit
amiko