Remplacement dans un tableau

Bonjour à tous.

Je reviens avec un problème que j'ai déjà posé et les indications intéressantes que j'avais reçues me croyaient suffisantes pour terminer seul. Mais je n'y suis pas arrivé.

J’ai une tableau1 en A4-F31 qui sert de base et qui contient des lettres a, b, … , h. Je le recopie en tableau 2 en J4-O31 (pour toujours pouvoir le récupérer quand je lance à nouveau le programme). En fait ce tableau est l’ensemble de toutes les combinaisons de 8 lettres 6 par 6 (C86).

Un autre tableau3 de 8 cellules est en J2-Q2 contiennent des nombres choisis (entre 1 et 45).

Il faut dans le tableau2 remplacer chaque lettre "a" par le contenu de J2, chaque lettre "b" par le contenu de K2, … chaque lettre "h" par le contenu de Q2.

J’ai créé une macro qui remplace effectivement les lettres a, … ,h par les nombres que j’ai manuellement placés dans la macro, mais je voudrais remplacer ces nombres-là par des variables n1, n2, … n8, introduites en J2-Q2 qui serviraient à remplacer les lettres.

J’ai créé une boîte de dialogue userform1 pour introduire les données. J’ai essayé d’écrire le code pour faire passer les données de userform1 dans la feuille de calcul je n’y suis pas arrivé. D’ailleurs la commande userform1.show ne fait pas apparaître la boîte de dialogue, pourquoi ?

Quelqu’un pourrait-il m’aider, je bidouille depuis des jours … j'ai joint un fichier "essai"

18essai.xlsm (19.30 Ko)

Merci d’avance et bonne journée.

P.S.-Accessoirement, comment afficher C86 avec l’indice et l’exposant l’un au-dessus de l’autre ?

Sylb

Bonjour

J'ai pas tout compris mais quand tu clic sur remplace tous les a sont remplacés, etc...

Je n'ai vu aucun code pour l'userform

Pour l'instant, quand tu clic sur valider les 8 premiers chiffres sont mis en j2 et suivant...

pour le reste... dit ce que tu souhaites

7essai.xlsm (23.36 Ko)

A+ François

Si c'est pour le loto moi j'utilise

26loto1.xlsm (27.73 Ko)

A+ François

Bonjour,

Autre proposition, avec utilisation de RECHERCHEH pour le report des valeurs dans le tableau 2

Cdlt

Bonjour Arturo83 et merci pour ta réponse.

Je vais modifier mon programme en fonction de ta réponse, car ceci n’était qu’une partie de mon progamme. Ce qui posait problème était le codage.

Autre question : comment puis-je répondre à quelqu’un qui m’envoie une réponse s’il n’y a pas la rubrique « Répondre » dessous ?

Merci encore et Bonne journée.

Sylb

Répondez à la suite en précisant à qui vous voulez vous adresser.

Bonjour

Bonjour à tous

Une variante

10essai-v1.xlsm (23.35 Ko)

Bye !

Bonjour gmb,

Merci pour ta réponse, le remplacement fonctionne très bien, mais je ne trouve pas le code.

Or cette partie de programme doit être inséré dans un programme plus complet.

Je ne vois pas comment faire dans ce cas pour utiliser ton résultat dans le programme élargi.

Bonne journée.

Sylb

Message à Fanfan38.

Merci pour ta solution. Je voulais te répondre (c'est la moindre des choses) mais il n'est pas indiqué "Réponse" dans ton message.

Cela fonctionne très bien, encore merci.

Sylb

mais je ne trouve pas le code.

Tu trouveras les codes en cliquant simultanément sur les touches Alt et F11

OK ?

Bye !

Bonjour gmb

Merci pour ta réponse, mais je n'arrive pas à voir le code (je crois que tu as mis un pot de passe. Avec Alt+F11 , je ne vois que les lignes pour le bouton mais pas pour le remplacement.

Sylb

Bonjour

...je n'arrive pas à voir le code

C'est curieux, je n'ai pourtant pas de mot de passe.

Voilà le code associé à l'USF :

Option Explicit

Dim tablo1, tablo2(), tablo3, lettres
Dim i&, j&, j3&, L&, n&, flag&

Private Sub CommandButton1_Click()
    'on vérifie les saisies
    flag = 0
    For n = 1 To 8
        Controls("Textbox" & n + 7).ForeColor = &H80000008
        If Controls("n" & n) = "" _
                Or Not IsNumeric(Controls("n" & n)) Then
              flag = 1
              Controls("Textbox" & n + 7).ForeColor = &HFF&
        End If
    Next n
    If flag = 1 Then
        MsgBox "Saisie incorrecte", 16
        Exit Sub
    End If

    'on reporte les saisies sur le tableau 3
    For j = 10 To 17
        Cells(2, j) = Val(Controls("n" & j - 9))
    Next j

    'On remplace les lettres par les nombres
    tablo1 = Range("A4").CurrentRegion
    ReDim tablo2(1 To UBound(tablo1, 1) - 1, 1 To UBound(tablo1, 2))
    tablo3 = Range("J2:Q2")
    lettres = Array("a", "b", "c", "d", "e", "f", "g", "h")

    For i = 2 To UBound(tablo1, 1)
        For j = 1 To UBound(tablo1, 2)
            For j3 = 1 To UBound(tablo3, 2)
                For L = 0 To UBound(lettres)
                    If tablo1(i, j) = lettres(L) Then
                        tablo2(i - 1, j) = tablo3(1, L + 1)
                        GoTo suite
                    End If
                Next L
            Next j3
suite:
        Next j
    Next i

    Range("J4").Resize(UBound(tablo1, 1), UBound(tablo1, 2)) = tablo2
    Unload Me
End Sub

et l'USF au cas où :

sans titre

Bye !

Rechercher des sujets similaires à "remplacement tableau"