Selection 'intelligente' de lignes

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

  • Votes
  • Date
  • Date décroissante
  1. 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...
    1. 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