Borner l'execution d'une SUB à une plage de cellule

tkd2009

XLDnaute Nouveau
bonjour,
Je vais essayer de vous exposer mon problème simplement.
Dans le fichier joint, j'ai un tableau sur la feuille "bilan" dont les données sont récupérées et mise en forme par la sub "formatage des données supplémentaires"
Je voudrais modifier cette SUB pour la faire fonctionner sur des "sample file" (colonne A de "bilan") qui se rajoutent au dernier moment sans toucher les autres.
Pour l'exemple j'ai rajouté les samples TOTO et TUTU en bas de colonne A, j'arrive à définir une plage sur ces nouveaux samples comme suit:
range(range("C65536").End(xlUp).Offset(1, -2), range("A65536").End(xlUp))
Ce qui correspond à la première cellule de "A" qui n'a pas de données en C jusqu'à la dernière ligne.
Mais je n'arrive pas à borner l'execution de la sub sur ce range.
Je n'ai pas trouvé la syntaxe ou l'argument (ou les 2) pour que la sub se limite à ce nouveaux range et ne réimporte pas toutes les données.
Quelqu'un pourrait il m'éclairer SVP ?
 

Pièces jointes

  • Test supplémentaire5.xls
    242.5 KB · Affichages: 35

NeMoS

XLDnaute Junior
Re : Borner l'execution d'une SUB à une plage de cellule

Bonjour,

Si tu arrives à déterminer le range sur lequel doit fonctionner la macro, est-ce qu'en utilisant un
With (sur ton range)
exécute la macro
end with

cela ne fonctionne pas ?

NeMoS
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Borner l'execution d'une SUB à une plage de cellule

Bonjout Tkd, NeMos, bonjour le forum,

Peut-être comme ça :
Code:
Dim dlg As Integer, I As Integer, lig As Integer, plg As Integer
Dim Col As Byte, c As Byte
With Sheets("Données brutes")
     plg = .Cells(Application.Rows.Count, 3).End(xlUp).Row + 1
     dlg = .Range("A65536").End(xlUp).Row
     For I = plg To dlg
          '....
 

tkd2009

XLDnaute Nouveau
Re : Borner l'execution d'une SUB à une plage de cellule

A neMos: ça ne change rien, la sub traite toutes les données et pas uniquement les nouvelles.
A Robert: j'ai essayé mais rien ne se passe....
Je pensais qu'en remplaçant le 'Columns("A")' de la ligne
'lig = WorksheetFunction.Match(.Range("B" & I), Sheets("Bilan").Columns("A"), 0)'
par ma nouvelle plage suffirait à borner l'execution, mais j'arrive pas à lui faire accepter cette plage...
Soit c'est pas la bonne solution, soit j'ai pas la bonne syntaxe...soit les 2
snif!
 

Discussions similaires