Selection 'intelligente' de lignes

Fermé
ninin31 Messages postés 4 Date d'inscription lundi 20 juillet 2015 Statut Membre Dernière intervention 27 juillet 2016 - 27 juil. 2016 à 14:26
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 27 juil. 2016 à 15:58
Bonjour,

Je dois réaliser une conversion sur un grand nombre de valeurs (je dois simplement les diviser par 1.10^6) et remplacer l'ancienne colonne par celle avec les valeurs converties, la macro est petite et facile à enregistrer mais un problème se pose lorsque je dois l'appliquer a d'autres fichier, en effet le nombre de valeurs varie d'un fichier a un autre, alors forcement je me retrouve avec des cases vides.

le bout de code incriminé est celui la:


alors ma question est: est il possible sélectionner des données en s'adaptant a chaque fichier? en clair a la place d'avoir ce 'C53447' je voudrais une fonction qui va jusqu’où s’arrêtent les données

j’espère avoir été clair :)

merci!!

Ps: je suis archi-debutant en VB/VBA, mais ca, vous avez du le remarquer!

2 réponses

ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
27 juil. 2016 à 15:51
Bonjour

Permet de diviser la colonne C depuis lideb (constante) jusqu'à lifin (variable) par coeff, en passant par l'intermédiaire du tableau T (pour accélérer l'exécution)

Const co = "C"
Const lideb = 2
Const coeff = 100000

Public Sub OK()
Dim lifin As Long, nT As Long, T(), li As Long
With ActiveSheet
lifin = .Cells(Rows.Count, co).End(xlUp).Row
nT = lifin - lideb + 1
ReDim T(lideb To lifin)
For li = lideb To lifin
T(li) = .Cells(li, co).Value / coeff
Next li
.Cells(lideb, co).Resize(nT, 1) = Application.Transpose(T)
End With
End Sub

Cdlmnt
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
27 juil. 2016 à 15:58
Bonjour Ninin, bonjour le forum,

Essaie comme ça :

Sub Macro1()
Dim DL As Long 'déclare la variable DL (Dernière Ligne)

DL = Range("B" & Application.Rows.Count).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne B
Range("C1").FormulaR1C1 = "=RC[-1]/10000000" 'écrit la formule en C1
Range("C1").AutoFill Destination:=Range("C1:C" & DL) 'recopie la formule jusqu'à la dernière ligne DL
End Sub


Toujours éviter les Select (quand on le peut) car ils ralentissent l'exécution du code...
0