Autres Faire une boucle sur des N+ de variables (excel2007)

eric57

XLDnaute Occasionnel
Bonjour le forum

Je souhaiterais réaliser une boucle en utilisant des N° dans ma variable

Voir dans mon ex.
je vais de V1 à V6

Pour le moment je répète mon code pour chaque type de variable ( V1; V2 etc..)

MAis je voudrais raccourcir le code en utilisant une boucle qui prendrait en compte chacune de mes 6 variables

J’espère m'expliquer clairement
 

Pièces jointes

  • texte-courroie.xlsm
    17.3 KB · Affichages: 19

soan

XLDnaute Barbatruc
Inactif
@eric57

Merci pour ta réponse, mais vu qu'il s'agit de combinaisons, je ne suis pas bon pour ça ! je vais donc laisser la place à un autre intervenant ; mais je signale quand même toutes ces autres anomalies :​

* en M5, ça devrait être "H" et pas "h"

* M4 et M5 sont inutiles car tu peux mettre directement les 2 valeurs dans la Validation de données de E5 : Source : J;H (sans mettre de signe égal devant, ni des guillemets)

* pour E5, Validation de données, titre : y'a un espace en trop à la fin ; message de saisie : y'a un « e » en trop au 2ème mot et un espace en trop à la fin.

* N4 et N5 sont inutiles car tu peux mettre directement les 2 valeurs dans la Validation de données de E7 : Source : Oui;Non (sans mettre de signe égal devant, ni des guillemets)​

* tu déclares ces 4 variables, mais tu ne les utilises pas : LI1 ; LI2 ; EL ; V

* tu utilises ces variables sans les avoir déclarées : B1 ; B2 ; L1 ; L3 ; L4
ainsi que V1 ; V2 ; V3 ; V4 ; V5 ; V6.

* tu as écrit : CONT = 1 mais CONT est ni déclaré, ni utilisé.

* tu fais quelque chose si Elastique = "Oui" ; tu fais rien si c'est "Non"

* ta sub liste() n'est pas une sub événementielle, donc tu peux la mettre dans un module standard nommé Module1 ; pas dans le module de "Feuil1" !​



pour E4, suggestion : met ce format de nombre personnalisé : # ##0" m"

pour D4:D7, suggestion : met un alignement gauche avec retrait de 1

ces 2 suggestions sont uniquement pour un côté esthétique :
ce sera mieux présenté. (c'est donc entièrement facultatif !)

soan
 

soan

XLDnaute Barbatruc
Inactif
@eric57

lis d'abord mon post #5 précédent.

exemple de plus belle présentation :

Image 1.jpg


Image 2.jpg


c'est juste un exemple, hein ? t'es pas obligé d'faire pareil ! 😜 😁

(remarque : la 2ème image est juste pour te montrer l'infobulle jaune)

soan
 
Dernière édition:

eric57

XLDnaute Occasionnel
Bonjour le Forum. Merci à @soan et @Dranreb

J'ai modifié le code, pour obtenir mon résultat
Nettoyage des bouts de codes inutiles après les essais

voila le résultat:

VB:
Sub liste2()

Dim LON As Long
Dim TYP As String
Dim DEN As Long
Dim V(1 To 6) As String
Dim L1 As String
Dim L2 As String
Dim L3 As String

LON = Range("E4")
TYP = Range("E5")
DEN = Range("E6")

L3 = Range("H13")


 If Range("E7").Value = "Oui" Then
 

For B1 = 13 To 15
    
 L1 = Range("G" & B1)

        
            For B2 = 13 To 18
            
            L3 = Range("H" & B2)
            
V(1) = LON & TYP & DEN & L3
V(2) = LON & "P" & TYP & DEN & L3
V(3) = DEN & "P" & TYP & L3 & LON
V(4) = "P" & TYP & DEN & L3 & LON
V(5) = LON & " " & TYP & DEN & " " & L3
V(6) = LON & " " & "P" & TYP & DEN & " " & L3
            
            L2 = L2 & L1 & V(1) & " ; " & L1 & V(2) & " ; " & L1 & V(3) & " ; " & L1 & V(4) & " ; " & L1 & V(5) & " ; " & L1 & V(6) & " ; "
            

            
            Next B2

   Next B1
  
  
  Else
 
  For B1 = 13 To 15
    
 L1 = Range("G" & B1)

    
            
V(1) = LON & TYP & DEN
V(2) = LON & "P" & TYP & DEN
V(3) = DEN & "P" & TYP & LON
V(4) = "P" & TYP & DEN & LON
V(5) = LON & " " & TYP & DEN
V(6) = LON & " " & "P" & TYP & DEN
            
            L2 = L2 & L1 & V(1) & " ; " & L1 & V(2) & " ; " & L1 & V(3) & " ; " & L1 & V(4) & " ; " & L1 & V(5) & " ; " & L1 & V(6) & " ; "
            

            
   Next B1
  
        
  End If
        
' MsgBox L2
        
        
'Range("I2").Value = L2
Sheets("Feuil2").Range("A1").Value = L2



End Sub

J'ai encore besoin d'un coup de main, .

Je voudrais mettre le résultat obtenu dans ma variable L2 sur une colonne au lieu de 1 cellule ( ici Sheets("Feuil2").Range("A1")

Le saut de ligne étant obtenu par le ; dans ma variable L2

Une idée ?
 

Dranreb

XLDnaute Barbatruc
Bpnjour.
Non, ça ne peut pas marcher comme ça. Faites :
VB:
Dim T(1 To 1000, 1 To 1), L&, N&
…

For N = 1 To 6
   L = L + 1
   T(L, 1) =  L1 & V(N)
   Next N

…
Feuil2.[A1].Resize(1000).Value = T
Vérifiez si Feuil2 est bien le nom de l'objet Worksheet qui représente la feuille "Feuil2"
 

eric57

XLDnaute Occasionnel
J'ai testé ton code, mais je n'arrive pas au résultat souhaité.

A la fin de ma macro, J'ai une variable L2 qui contient une liste de données séparées par un "point virgule"
Je voudrais juste que cette liste soit mise sur une colonne avec une donnée par ligne sur ma feuil2 en partant de A1. le nombre de données dans cette liste allant de 6 à 108 environs
 

Discussions similaires

Statistiques des forums

Discussions
312 413
Messages
2 088 199
Membres
103 765
dernier inscrit
Pi4