Un cycle A - IV

Simply

XLDnaute Occasionnel
Hi,

Je dois obtenir une liste AZ dans une List Box...

Maintenant, je dois changer le nombre de combinaisons A - IV
Merci

Code:

Code:
Sub LoopThroughString()
    Dim txt As String
    Dim I As Integer
    Dim C As String
    Dim arr()
    
    txt = UCase$("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
    ReDim arr(1 To Len(txt) * 2, 1 To 1)
    For I = 1 To Len(txt)
        C = Mid$(txt, I, 1)
'        MsgBox C
        arr(I, 1) = C
    Next
    X = a
    For I = 1 To Len(txt)
        C = "A" & Mid$(txt, I, 1)
'        MsgBox C
        arr(Len(txt) + I, 1) = C
    Next
    Range("A1").Resize(Len(txt) * 2).Value = arr
End Sub
 

PMO2

XLDnaute Accro
Re : Un cycle A - IV

Bonjour,

Une autre approche avec l'astuce suivante
Code:
Sub aa()
Dim R As Range
Dim C As Range
Dim var
Dim j&
Dim i&
Dim A$
'---
Set R = Range("a1:iv1") 'l'astuce est de définir la plage en ligne 1 de colonne A à colonne IV
var = R
For Each C In R
  j& = j& + 1
  A$ = C.Address(False, False)
  For i& = 1 To Len(A$)
    If IsNumeric(Mid(A$, i&, 1)) Then
      Exit For
      A$ = ""
    Else
      var(1, j&) = var(1, j&) & Mid(A$, i&, 1)
    End If
  Next i&
Next C
'--- Inscription ---
Range("a1:a" & UBound(var, 2)) = Application.WorksheetFunction.Transpose(var)
End Sub
 

laurent950

XLDnaute Accro
Re : Un cycle A - IV

Bonsoir PMO2,

Ont peux faire plus court :

VB:
Sub aa()
Dim R As Range
Dim var() As String
Dim i As Integer
'--- Extraction ---
Set R = Range("a1:iv1") 'l'astuce est de définir la plage en ligne 1 de colonne A à colonne IV
ReDim var(1 To R.Columns.Count, 1 To 1)
For i = 1 To R.Columns.Count
  var(i, 1) = Split(R(i).Address(True, False), "$")(0)
Next i
'--- Inscription ---
Range("a1").Resize(UBound(var, 1), UBound(var, 2)) = var
End Sub

PS : Super votre astuce
 

Simply

XLDnaute Occasionnel
Re : Un cycle A - IV

Hi,

Merci pour les réponses, mais je dois éviter de faire la feuille rifermento pour une liste

Dans ce que je réussi à obtenir ensuite utiliser VB6

Code:
Function Dec2Base(DecimalValue As Variant, Base As Long) As String
  Const PossibleDigits = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  DecimalValue = CDec(DecimalValue)
  Do Until DecimalValue = 0
    Dec2Base = Mid(PossibleDigits, CDec(DecimalValue) - Base * _
               Int(DecimalValue / Base) + 1, 1) & Dec2Base
    DecimalValue = Int(CDec(DecimalValue) / Base)
  Loop
End Function

Sub ciclo()
    Dim arr()
    ReDim arr(1 To 65536, 1 To 1)
    arr(1, 1) = "A"
    
    For K = 1 To UBound(arr) - 1
      X = X + 1
      arr(X + 1, 1) = Dec2Base(K, 26)
      K = X
    Next
    
    Range("A1").Resize(UBound(arr)).Value = arr
End Sub

Merci
 

Staple1600

XLDnaute Barbatruc
Re : Un cycle A - IV

Bonsoir à tous

Simply
Dans ce que je réussi à obtenir ensuite utiliser VB6
Bizarre, bizarre, on dirait pile poil, (les chiffres en moins) la fonction de Rick Rothstein écrite en mars 2013...:rolleyes::p;)

The function takes two arguments... the decimal number you want to convert and the base you want to convert it to.
Because VB will want to convert numbers that are too large to scientific notation, you will need to pass such large values
into the function as a text string... smaller numbers can be passed in as numbers or text strings.
Code:
Function Dec2Base(DecimalValue As Variant, Base As Long) As String
  Const PossibleDigits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
 DecimalValue = CDec(DecimalValue) 
 Do Until DecimalValue = 0 
 Dec2Base = Mid(PossibleDigits, CDec(DecimalValue) - Base *  Int(DecimalValue / Base) + 1, 1) & Dec2Base    
DecimalValue = Int(CDec(DecimalValue) / Base) 
 Loop
End Function

Mais au fait, peux-tu préciser, stp, ce que concrètement tu cherches à faire, car tu parles de ListBox, mais j'en vois aucune trace dans ton code VBA.
(ni de fichier Excel exemple joint qui pourtant nous aiderait à comprendre de quoi il s'agit ici)
 
Dernière édition:

Simply

XLDnaute Occasionnel
Re : Un cycle A - IV

Hi, Staple1600

Bien sûr, fonction Rick Rothstein écrite en mars 2013 :cool:


Je besoin d'ajouter cette fonctionnalité dans un ListBox en VB6 pour voir les articles dans un dossier.
Je l'ai déjà fait de la recherche de gestion du cycle de VB6 sur 100 fichier txt et je voulais ajouter cette simple liste A - Z.

C - Mela
A - Pera
G - Ciliegia
---
D - Limone

Je ne sais pas ce que le symbole ultime pour le début de la recherche

A - Pera
B -
C - Mela
D - Limone
E -
F -
G - Ciliegia

Je devrais être capable de composer une telle liste que le résultat final
Maintenant, je voulais pour simplifier la génération du cycle A - Z
Je l'espère une simplification, des conseils pour définir le code
 

PMO2

XLDnaute Accro
Re : Un cycle A - IV

Bonjour,

Je reviens sur ce post car, pour ceux que cela intéresse, j'ai trouvé un moyen d'obtenir les lettres des colonnes (Système numérique bijectif base 26 sans zéro).
Code:
Sub GetBase26SansZero()
Dim i&
Dim cpt1&
Dim cpt2&
Dim cpt3&
Dim CAR1$
Dim CAR2$
Dim CAR3$
Dim T(1 To 16384, 1 To 1) 'adapter la 1ère dimension selon son besoin
'----
For i& = 1 To UBound(T)
  '--- Unités ---
  CAR1$ = Chr(cpt1& + 65)
  cpt1& = cpt1& + 1
  If cpt1& = 26 Then cpt1& = 0
  '--- Dizaines ---
  If i& > 26 Then
    CAR2$ = Chr(cpt2& + 65)
    If i& Mod 26 = 0 Then cpt2& = cpt2& + 1
    If cpt2& = 26 Then cpt2& = 0
  End If
  '--- Centaines ---
  If i& > 702 Then
    CAR3$ = Chr(cpt3& + 65)
    If (i& - 702) Mod 26 ^ 2 = 0 Then cpt3& = cpt3& + 1
  End If
  '--- Mise en tableau ---
  T(i&, 1) = CAR3$ & CAR2$ & CAR1$
Next i&

'######################################################
'---  Inscription dans une nouvelle feuille Excel  ---
'--- Si hors Excel, flaguer les 2 lignes suivantes ---
Sheets.Add
Range("a1:a16384") = T
'######################################################

End Sub
 

Pièces jointes

  • Obtenir les lettres des colonnes - Système numérique bijectif base 26 sans zéro.xlsm
    15.3 KB · Affichages: 14

Modeste geedee

XLDnaute Barbatruc
Re : Un cycle A - IV

Salut Patrick©
Bonjour,

Je reviens sur ce post car, pour ceux que cela intéresse, j'ai trouvé un moyen d'obtenir les lettres des colonnes (Système numérique bijectif base 26 sans zéro

;)
Function Lettrecolonne(col As Integer) As String
Lettrecolonne = Replace(Cells(1, col).Address(False, False), "1", "")
End Function

bien sur il manque la gestion d'erreur Nb colonne maxi selon version...
 

Discussions similaires

Statistiques des forums

Discussions
312 304
Messages
2 087 065
Membres
103 451
dernier inscrit
Souleymane