Insérer des données dans un fichier dynamique

Bonjour,

J'aurais besoin d'aide pour créer une macro qui permet d'insérer des données dans une ligne au-dessus d'une plage(nommée: "MaPlage"). Cette ligne change à chaque mois et il n'est donc pas possible de prendre en compte une cellule précise (ex:C11). En plus, les données à insérer je vais les chercher dans un autre classeur. Je cherche à récuppérer le total des produits mais chaque mois le nombre de ligne du dossier change aussi. Pour finir je fais la somme.

Voilà le code que j'ai commencé à faire mais je n'arrive pas à le faire fonctionner.

\\sélectionne MaPlage

Range("MaPlage").Select

\\Sélectionne la ligne d'avant

Range.Offset(-1, 0).Select

\\Sélectionne la cellule C11

Range.("C11").Select

ActiveCell.FormulaR1C1 = "=[Classeur2]Feuil1!R11C3"

Range.Offset("C11").Select

Selection.AutoFill Destination:=Range("C11:H11"), Type:=xlFillDefault

Range("C11:H11").Select

Range("I11").Select

ActiveCell.FormulaR1C1 = "=SUM(RC[-6]:RC[-1])"

Range("C11").Select

End Sub

Pouvez-vous m'aider?


Oups il manque un fichier


8test2-1.xlsx (9.46 Ko)
12test3-copie1.xlsx (14.09 Ko)

Bonjour

Un essai à tester. Te convient-il ?

14test2-1.xlsx (9.46 Ko)
15test3-copie2.xlsm (25.98 Ko)

Salut gmb,

Merci pour ta réponse.

Saurais-tu comment on fait pour que ma macro prennent les données du total indépendamment de la ligne. C'est à dire que des mois ma données sera dans la case C11 mais des fois elle sera dans une autre case comme D11

Merci encore

Amdora

Bonjour

Amdora a écrit :

comment on fait pour que ma macro prennent les données du total indépendamment de la ligne. C'est à dire que des mois ma données sera dans la case C11 mais des fois elle sera dans une autre case comme D11

Déjà, l'exemple que tu donnes n'est pas bon puisque les cellules C11 et D11 sont sur une même ligne.

Cela n'éclaire pas beaucoup ma lanterne.

Si les données peuvent être n'importe où, il faut bien que la macro ait une indication pour les retrouver. Elle ne peut pas deviner. Moi non plus d'ailleurs !

Bye !

En effet, tu as raison...

Chaque mois une ligne est masquée dans mon tableau et donc chaque mois le numéro de la ligne change. C'est pour ça que j'ai nommé une plage pour avoir un point de repère pour ma macro. Cette plage, elle ne bouge pas car j'insère une ligne pour le nouveau mois juste au-dessus. Cela est valable pour le fichier ou j'insère les données (fichier: Test3_Copie). Pour le fichier où je prends les données, la ligne du total change car des mois on vends plus de produits que d'autres. C'est un tableau croisé dynamique. C'est ça qui est compliqué...

Qu'en penses-tu?

Merci encore

Bonjour

Nouvel essai.

Bye !

16test2-1.xlsx (14.33 Ko)
17test3-copie3.xlsm (27.62 Ko)

C'est cool merci beaucoup.

Mais pour que ce soit parfait, il faudrait que quand j'ajoute des lignes dans le document Test2.1 et que j'active une macro, la valeur dans la plage soit toujours celle de 'Total produit livré'. Penses-tu que ce serait possible?

Amdora

10test2-1-4.xlsx (9.60 Ko)
12test3-copie-3.xlsm (23.36 Ko)

Tu écris :

il faudrait que quand j'ajoute des lignes dans le document Test2.1 et que j'active une macro, la valeur dans la plage soit toujours celle de 'Total produit livré'.

Mais c'est bien ce que doit faire la macro puisqu'elle repère la ligne à copier en recherchant dans la colonne A le texte ‘’ Total produit livré’’

Mais je remarque que l’un fichiers que tu me retournes a changé de nom :

De ‘’ Test2.1.xlsx’’ ce fichier est passé à ‘’ Test2.1 (4).xlsx’’

Attention :

Lle nom de ce fichier intervient 2 fois dans la macro. Si tu le changes, il te faut le changer aussi dans la macro.

Autre remarque :

Il faut éviter de mettre des points (‘’.’’) dans le nom des fichiers. Excel le proscrit. Cela peut occasionner des surprises car, dans un fichier, le point est réservé à marquer le début de l’extention comme .xls ou .xlsm ou encore .xlsm

Bye !

Merci pour tes conseilles. J 'en prendrais bonne note.

ça marche super bien!

Etant débutante, je me demandais si je pouvais encore te demander, la signification de:

\\ signification de -6 et -1:

ActiveCell.FormulaR1C1 = "=SUM(RC[-6]:RC[-1])

\\ signification de R et C qui se trouve entre les guillemets:

ActiveCell.FormulaR1C1 = "=[Test2_1.xlsx]Feuil1!R" & ln & "C"

En tous cas merci beaucoup!

Bonjour

Amdora a écrit :

signification de -6 et -1:ActiveCell.FormulaR1C1 = "=SUM(RC[-6]:RC[-1])

Je me sers de ce type d’instruction quand je veux mettre une formule dans une cellule avec une macro.

Mais comme je ne suis pas un génie, je me sers de l’enregistreur de macro. C’est très simple :

• J’écris la formule désirée dans la cellule désirée

• Je sélectionne cette cellule

• Je lance l’enregistreur de macro

• Je clique dans la barre de formule

• Je valide

• J’arrête l’enregistreur de macro

Après, c’est parfois un peu plus délicat car il faut bricoler le résultat obtenu, en particulier quand la formule doit être écrite à plusieurs endroits par la macro.

Il faut remplacer les références des lignes et des colonnes par des variables.

Dans l’instruction ci-dessus, on va écrire dans la cellule active la somme de la plage de cellule qui va de la cellule située sur la même ligne (que la cellule active) et sur la 6° colonne à gauche jusqu’à la cellule située sur la même ligne mais une seule colonne avant.

OK ?

Signification de R et C qui se trouve entre les guillemets:

ActiveCell.FormulaR1C1 = "=[Test2_1.xlsx]Feuil1!R" & ln & "C"

C’est du même tonneau.

On écrit que la cellule active est égale à une cellule qui est dans un autre classeur.

R veut dire row c’est-à-dire ligne. Et C veut dire column c’est-à-dire colonne

ActiveCell.FormulaR1C1 = "=R[4]C[1]" Cela signifie que l’on écrit dans la cellule active une formule qui dit : = la cellule dont la ligne est 4 lignes plus loin et sa colonne est une colonne plus loin.

ActiveCell.FormulaR1C1 = "=R14C5" Cela signifie que l’on écrit dans la cellule active une formule qui dit : = $E$14 , c’est-à-dire = la cellule qui est à la colonne 5 et à la ligne 14

Cette façon d’opérer, en mettant des valeurs absolues , c'est à dire des dollars dans les formules avant de les enregistrer est plus facile ensuite à bricoler.

Il suffit de sortir les numéros de lignes et de colonnes pour les remplacer par les noms de variables (ex ln et col) qui représentent les numéros de lign et de colonnes

Ex "=R14C5" deviendra : "=R" & ln & "C" & col

OK ?

Bye !

Yes merci beaucoup pour tes explications et ton temps!

Amdora

Rechercher des sujets similaires à "inserer donnees fichier dynamique"