Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 VBA pour générer une liste de valeurs comprise entre 2 valeurs

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

benjy555

XLDnaute Junior
Bonjour a tous et deja merci pour votre aide 🙂

Voici l'idée : je souhaite obtenir en colonne la liste de toutes les valeurs comprises entre 2 valeurs.

En A1 il y a un type : "TOTO" en B1 il y la valeurs "1"et C 1 il y a la valeurs "10"
j'ai besoin que en D1 (peu importe, ou meme dans un nouvel onglet) la macro viennent écrire "TOTO" puis en E1 la valeurs "1" et ensuite en en D2 à nouveau "TOTO" puis en E2 : "2" , D3 "TOTO" et E3 "3" etc jusqu'à "10" en E10

Mais en A2, B2 et C2 il y a encore un nouveau type et 2 autres valeurs, par ex "TATA" "15" et "20" et il faut venir à la suite de D10 donc en D11 mettre "TATA" puis en E11 mettre "15" etc jusqu' "20"

voici l'exemple en fichier excel avec le résultat souhaité en colonne C
pour info dans mon vrai fichier j'ai plus de 14 000 ligne d'intervalles de valeurs d'ou la nécessité de la macro

merci
 

Pièces jointes

Dernière édition:
Bonjour.
Désolé pour le bogue. Corrigé :
VB:
Option Explicit
Sub GénNbr()
   Dim TDonn(), TRésu(), L&, N&, LR&
   TDonn = ActiveSheet.[A1].Resize(ActiveSheet.Cells(2 ^ 20, "B").End(xlUp).Row, 3).Value
   For L = 1 To UBound(TDonn, 1)
      If VarType(TDonn(L, 2)) = vbDouble And VarType(TDonn(L, 3)) = vbDouble Then
         If TDonn(L, 3) >= TDonn(L, 2) Then LR = LR + TDonn(L, 3) - TDonn(L, 2) + 1
         End If
      Next L
   ReDim TRésu(1 To LR, 1 To 2)
   LR = 0
   For L = 1 To UBound(TDonn, 1)
      If VarType(TDonn(L, 2)) = vbDouble And VarType(TDonn(L, 3)) = vbDouble Then
         For N = TDonn(L, 2) To TDonn(L, 3)
            LR = LR + 1: TRésu(LR, 1) = TDonn(L, 1): TRésu(LR, 2) = N
            Next N: End If: Next L
   ActiveSheet.[D:E].ClearContents
   ActiveSheet.[D1].Resize(LR, 2).Value = TRésu
   End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…