' ' ============================================ ' Idéalement mettre ce block dans une fonction... ' ============================================ Dim nFh As Integer, lngLen As Long Dim strBuffer As String nFh = FreeFile lngLen = FileLen("lang.dat") Open "lang.dat" For Binary As #nFh strBuffer = String$(lngLen, "0") ' remplir avec des zéros. Get #nFh, , strBuffer ' le paramètre vide veut dire commencer au début. ' lire en un coup: rapide. Close #nFh ' important Dim strLines() As String ' définir comme un array dynamique strLines = Split(strBuffer, vbCrLf) 'Cet array contiendra autant de string distinctes qu'il y avait de lignes dans le CSV. Dim i As Integer, k As Integer Dim nLo As Integer Dim nHi As Integer Dim strOneLile() As String On Error Resume Next ' au cas out strLines ne serait pas initialisé nLo = LBound(strLines) ' toujours vérifier les index possibles. nHi = UBound(strLines) If Err.Number <> 0 Then Exit Sub Dim blnFound As Boolean ' Mettre ceci dans un module au cas ou il y aurait plusieurs formes. Public arrGlobal() As String Public nIndex As Integer ' Index unique pour indiquer laquelle colonne sélectionner Public nNumLanguage As Integer strOneLine = Split(strLines(0), ";") ' il faut détecter combien il y a de langues. ' et pour fixer les limites des index d'array...sinon runtime Error: index out of bound nNumLanguage = UBound(strOneLine) - LBound(strOneLine) + 1 ' Ceci donnera un nouvel array contenant la structure suivante: ' "ctrlID" = strOneLine(0) ' "Francais" = strOneLine(1) ' "Anglais" = strOneLine(2) ' "Autre langue dans le futur ' Détecter et fixer ici l'index de la langue à utiliser For k = LBound(strOneLine) To UBound(strOneLine) Step 1 If strOneLine(k) = "Francais" Then '- selon le choix de l'usager. nIndex = k ' Ex.: Francais serais l'index 1 blnFound = True Exit For ' Inutile de continuer End If Next k ' il serait prudent de mettre ici un langage par défaut si le choix sélectionné dans le INI file n'est pas trouvé. If Not blnFound Then nIndex = 1 ' celui du langage original par défaut. End If ' ============================================ ' Fin de fonction ' ============================================ ' Nous avons maintenant l'index du langage à utiliser. ' Il faut maintenant remplir l'array qui donnera les mots exacts pour tous les contrôles ReDim arrGlobal(nLo To nHi) ReDim arrID(nLo To nHi) For i = nLo To nHi Step 1 strOneLine = Split(strLines(i), ",") arrGlobal(i) = strOneLine(nIndex) arrID(i) = strOneLine(0) ' L'ID du control permet de mettre ceux-ci en vrac et facilite les modifications ultérieures. ' Pour traduire, ouvrir le dossier CSV dans Excel: chaque langue aura sa propre colonne. Next i ' L'index des nIDs des controls et de leur "captions" étant toujours les mêmes, il suffit d'orienter correctement la propriété Sub Form_Load() Dim i As Integer, nLo As Integer, nHi As Integer ' fonction regroupant tout le code ci-dessus. GetAllCorrectLanguages(valeur_sauvée_dans_un_Ini_file) nLo = LBound(arrGlobal) nHi = UBound(arrGlobal) For i = nLo To nHi Step 1 Select Case arrID(i) Case "btnOK" buttonOK.Caption = arrGlobal(i) Case "btnCancel" buttonCancel.Caption = arrGlobal(i) Case "btnSuivant" buttonNext.Caption = arrGlobal(i) Case Else ' ne rien faire End Select Next i End Sub
Avis de décès, Carte de voeux, Bricolage, Coloriages, Cinéma, Coiffure, Cuisine, Déco, Dictionnaire, Horoscope, Jeux en ligne, Programme TV, Recettes, Restaurant, SMIC, Test débit, Voyage, Signification prénom