Simplification Macro

Résolu/Fermé
Manouchk - 3 mai 2013 à 18:06
 Manouchk - 6 mai 2013 à 08:17
Bonjour,
J'ai finit une macro qui tourne bien et qui me satisfait. Cependant, je peux seulement la faire tourner sur des fichier de 500 lignes, 500 colonnes.
Quel est la syntaxe quand on veut une recherche de la dernière cellule non vide? En fait j'aimerais remplacer par exemple les Range "SG495", "SI", "SG"... par une recherche automatique de la première colonne vide ...
J'espère que ma demande parait claire!
J'ai essayé pas mal de synthaxe mais avec les différentes versions, je suis un peu perdu...
Pouvez vous m'aidez?




'Boucle : Compile tous les fichiers trouvés dans un même dossier'
While Len(Fichier) > 0
Workbooks.Open Chemin & Fichier
AvantDernièreLigne = ActiveSheet.UsedRange.Rows.Count - 1
Range("B2:SG495" & AvantDerniereLigne).Copy
Workbooks("Récap_P1C1.xlsm").Activate
Worksheets("Feuil1").Activate
DebutNomFichier = ActiveSheet.UsedRange.Rows.Count + 1
Range("A" & ActiveSheet.UsedRange.Rows.Count + 1).Select
ActiveSheet.Paste
Workbooks(Fichier).Close
Fichier = Dir
Wend


' Calcul Macro Nombre de case non nulle'

Worksheets("Feuil1").Activate
Range("SG2").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(RC[-500]:RC[-1],""<>255"")"
Range("SG2").Select
Selection.AutoFill Destination:=Range("SG2:SG" & ActiveSheet.UsedRange.Rows.Count), Type:=xlFillDefault
Range("SG2:SG" & ActiveSheet.UsedRange.Rows.Count).Select
ActiveWindow.SmallScroll Down:=-48

' Calcul Macro Volume estimé par ligne de pixels'
Worksheets("Feuil1").Activate
Range("SH2").Select
ActiveCell.FormulaR1C1 = "=(RC[-1]*0.05485^2)"
Selection.AutoFill Destination:=Range("SH2:SH" & ActiveSheet.UsedRange.Rows.Count), Type:=xlFillDefault
Range("SH2:SH" & ActiveSheet.UsedRange.Rows.Count).Select


' Calcul Macro Volume estimé par ligne de pixels'
Worksheets("Feuil1").Activate
Range("SI2").Select
ActiveCell.FormulaR1C1 = "=(((RC[-2]*0.05485)/2)^2)* 0.05485 *PI()"
Selection.AutoFill Destination:=Range("SI2:SI" & ActiveSheet.UsedRange.Rows.Count), Type:=xlFillDefault
Range("SH2:SH" & ActiveSheet.UsedRange.Rows.Count).Select


'Calcul Macro TOTALE Surface totale'
LigneTotal = ActiveSheet.UsedRange.Rows.Count + 2
Range("SF" & LigneTotal) = "TOTAL :"
Range("SH" & LigneTotal).FormulaLocal = "=Somme(SH2:SH" & LigneTotal - 1 & ")"

Range("SI" & LigneTotal).FormulaLocal = "=Somme(SI2:SI" & LigneTotal - 1 & ")"



A voir également:

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
3 mai 2013 à 18:15
bonjour

pour la dernière colonne
dercol = Cells.Find("*", , , , , xlPrevious).Column


Quelle est l'utilité d'écrire des formules, tu crées des tableaux ou tu fais des calculs ?
0
Merci pour cette réponse!
En fait, je colle des tableaux les uns à la suite des autres qui représentent des pixels unitaires d'image. Ensuite automatiquement grâce à la Macro je calcule des surface et des volumes de révolution.

Y a t il un problème à faire une macro avec création de tableau + calculs?
0