Selection 'intelligente' de lignes

ninin31 Messages postés 5 Statut Membre -  
ThauTheme Messages postés 1564 Statut Membre -
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

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  2. ThauTheme Messages postés 1564 Statut Membre 160
     
    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