• Aucun résultat trouvé

[PDF] Formation de VBA : les controleurs et tableaux | Cours informatique

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Formation de VBA : les controleurs et tableaux | Cours informatique"

Copied!
24
0
0

Texte intégral

(1)

Cours VBA : les contrôles

(suite)

Les barres de défilement (ScrollBar)

Les contrôles peuvent être utilisés en dehors des UserForms. Pour cet exemple, nous utiliserons les contrôles directement sur la feuille.

Notez tout d'abord que le "Mode Création" doit être activé pour modifier un contrôle placé sur une feuille (et désactivé pour utiliser le contrôle).

Pour les versions d'Excel inférieures à 2007 : bouton sur la barre "Boîte à outils Contrôles".

(2)

L'objectif est de colorer et sélectionner une cellule grâce aux barres de défilement dans la zone définie de 30 lignes x 10 colonnes.

Les propriétés de la barre de défilement verticale :  Min : 1

Max : 30 (puisque 30 lignes)

Value : position de la barre (entre 1 et 30 ici)

Même chose avec la barre horizontale avec un Max à 10 ...

Voici le code qui sera appliqué à chaque changement de valeur (Value) de la barre verticale :

'Couleur grise sur les cellules

Cells.Interior.Color = RGB(240, 240, 240) 'Couleur et sélection de la cellule

With Cells(ScrollBar_verticale.Value, ActiveCell.Column) 'Cellule par

rapport à Value

.Interior.Color = RGB(255, 220, 100) 'Couleur orange

.Select 'Sélection de la cellule

End With

Ce code sera exécuté avec les événements Change et Scroll pour lancer les instructions quelle que soit la partie de la barre de défilement qui est cliquée.

(3)

Voici le code pour la barre verticale :

Private Sub barre_verticale()

'Couleur grise sur les cellules

Cells.Interior.Color = RGB(240, 240, 240)

'Couleur et sélection de la cellule

With Cells(ScrollBar_verticale.Value, ActiveCell.Column)

.Interior.Color = RGB(255, 220, 100) 'Orange

.Select 'Sélection de la cellule End With

End Sub

Private Sub ScrollBar_verticale_Change()

barre_verticale

End Sub

Private Sub ScrollBar_verticale_Scroll()

barre_verticale

End Sub

Et celui de la barre horizontale :

Private Sub barre_horizontale()

'Couleur grise sur les cellules

Cells.Interior.Color = RGB(240, 240, 240) 'Couleur et sélection de la cellule

With Cells(ActiveCell.Row, ScrollBar_horizontale.Value)

.Interior.Color = RGB(255, 220, 100) 'Orange

.Select 'Sélection de la cellule End With

End Sub

Private Sub ScrollBar_horizontale_Change()

barre_horizontale

End Sub

Private Sub ScrollBar_horizontale_Scroll()

barre_horizontale

End Sub

Le fichier : scrollbar.xls

La liste déroulante (ComboBox) et la zone

de liste (ListBox)

(4)

Le fichier : userform4.xls

Au lancement de l'UserForm, nous voulons que les 4 pays soient chargés dans la liste déroulante (avec la méthode AddItem) :

Private Sub UserForm_Initialize()

For i = 1 To 4 ' => pour lister les 4 pays

ComboBox_Pays.AddItem Cells(1, i) 'Ajoute les valeurs des cellules A1 à D1 avec la boucle

Next

End Sub

Au changement de valeur de la liste déroulante, nous voulons ajouter les villes correspondant au pays choisi avec une boucle semblable à celle ci-dessus. Pour le faire, nous avons besoin du n° de colonne et du nombre de lignes.

La propriété ListIndex correspond au n° de la sélection dans la liste (contrairement à Value qui correspond à la valeur), à noter que ListIndex commence à 0.

Le n° de colonne est donc :

no_colonne = ComboBox_Pays.ListIndex + 1

Pour obtenir le nombre de lignes de la colonne du pays choisi, nous pouvons rechercher le n° de ligne de la dernière cellule d'un bloc de cellules non vides :

nb_lignes = Cells(1, no_colonne).End(xlDown).Row

Grâce à ces informations, il est désormais possible de créer la boucle pour ajouter les villes dans la zone de liste :

Private Sub ComboBox_Pays_Change()

'Zone de liste vidée (sinon les villes sont ajoutées à la suite) ListBox_Villes.Clear

Dim no_colonne As Integer, nb_lignes As Integer

(5)

'Numéro de la sélection (ListIndex commence à 0) :

no_colonne = ComboBox_Pays.ListIndex + 1 'Nombre de lignes de la colonne du pays choisi :

nb_lignes = Cells(1, no_colonne).End(xlDown).Row

For i = 2 To nb_lignes ' => pour lister les villes

ListBox_Villes.AddItem Cells(i, no_colonne) Next

End Sub

Remarque : nous pourrions réduire le code ci-dessus, néanmoins cela rendrait sa lecture plus difficile :

Private Sub ComboBox_Pays_Change()

ListBox_Villes.Clear

For i = 2 To Cells(1, ComboBox_Pays.ListIndex +

1).End(xlDown).Row

ListBox_Villes.AddItem Cells(i, ComboBox_Pays.ListIndex + 1) Next

End Sub

La ville choisie est ensuite entrée dans la zone de texte :

Private Sub ListBox_Villes_Click()

TextBox_Choix.Value = ListBox_Villes.Value

End Sub

Le fichier : userform4b.xls

Aller plus loin

N'oubliez pas qu'avec l'aide Excel vous pouvez obtenir des informations rapidement sur les différentes propriétés et événements des contrôles (entre autres).

(6)

L'aide Excel est très riche en informations, n'hésitez pas à l'utiliser en cas de besoin ...

Cours VBA : les contrôles

(exercice)

Pour mettre en pratique l'utilisation des contrôles, rien de tel qu'un petit exercice ...

Voici le point de départ de l'exercice : Le fichier : controles_exercice.xls

(7)

Vous l'aurez compris, l'objectif est de remplir le tableau via le formulaire. Quelques points à prendre en compte :

 Lister les pays en fonction de la liste de la seconde feuille

 Vérifier le contenu des contrôles avant d'ajouter un nouveau contact

 Après insertion, réinitialiser les valeurs des contrôles sans fermer le formulaire Prenez un moment pour réaliser cet exercice avant de passer à la solution ...

. . . . . . . . . . . . . . . . . .

(8)

. . . . . . . . . . . .

Voici une solution pour réaliser cet

exercice

La première action effectuée a été d'augmenter la propriété Zoom de l'UserForm à 120 pour plus de confort à l'utilisation du formulaire :

Les tests des boutons d'option ont déjà été vus à la première page des contrôles, c'est pour cela qu'une solution plus simple a été utilisée ici.

Le bouton "Mme" a été choisi par défaut (propriété Value : True), cela implique qu'il ne sera pas nécessaire de vérifier si le choix de la civilité a été effectué.

(9)

Private Sub CommandButton_Fermer_Click() Unload Me

End Sub

Le contenu de la liste déroulante

Private Sub UserForm_Initialize() 'Chargement de la liste au lancement de l'UserForm

For i = 1 To 231 'Liste des 231 pays de la feuille "Pays"

ComboBox_Pays.AddItem Sheets("Pays").Cells(i, 1) Next

End Sub

Vérification des contrôles

Une solution simple consiste à afficher une boîte de dialogue si l'un des contrôles est vide :

Private Sub CommandButton_Ajouter_Click()

If TextBox_Nom.Value = "" Or TextBox_Prenom.Value

= "" Or TextBox_Adresse.Value = "" Or TextBox_Lieu.Value

= ""Or ComboBox_Pays.Value = "" Then

MsgBox "Formulaire incomplet"

Else

'Instructions pour insérer le contact ici ... End If

End Sub

Mais pour compliquer un peu les choses, chaque contrôle sera testé individuellement, et si l'un d'eux n'est pas rempli, son intitulé (Label) sera coloré en rouge :

Private Sub CommandButton_Ajouter_Click()

'Coloration des Labels en noir

Label_Nom.ForeColor = RGB(0, 0, 0) Label_Prenom.ForeColor = RGB(0, 0, 0) Label_Adresse.ForeColor = RGB(0, 0, 0) Label_Lieu.ForeColor = RGB(0, 0, 0) Label_Pays.ForeColor = RGB(0, 0, 0) 'Contrôles de contenu

If TextBox_Nom.Value = "" Then 'SI pas de "nom" ...

Label_Nom.ForeColor = RGB(255, 0, 0) 'Label "nom" en rouge

ElseIf TextBox_Prenom.Value = "" Then

Label_Prenom.ForeColor = RGB(255, 0, 0)

ElseIf TextBox_Adresse.Value = "" Then

Label_Adresse.ForeColor = RGB(255, 0, 0)

ElseIf TextBox_Lieu.Value = "" Then

Label_Lieu.ForeColor = RGB(255, 0, 0)

ElseIf ComboBox_Pays.Value = "" Then

Label_Pays.ForeColor = RGB(255, 0, 0) Else

(10)

End If

End Sub

Insertion des données

Le code suivant a été inséré à l'emplacement indiqué sur la code précédent (sous forme de commentaire) :

Dim no_ligne As Integer, civilite As String

'Choix de civilité

For Each bouton_civilite In Frame_Civilite.Controls

If bouton_civilite.Value Then

civilite = bouton_civilite.Caption 'Civilité choisie

End If Next

'no_ligne = N° de ligne de la dernière cellule non vide de la colonne +1 no_ligne = Range("A65536").End(xlUp).Row + 1 'Insertion des valeurs sur la feuille

Cells(no_ligne, 1) = civilite Cells(no_ligne, 2) = TextBox_Nom.Value Cells(no_ligne, 3) = TextBox_Prenom.Value Cells(no_ligne, 4) = TextBox_Adresse.Value Cells(no_ligne, 5) = TextBox_Lieu.Value Cells(no_ligne, 6) = ComboBox_Pays.Value 'Après insertion, on remet les valeurs initiales

OptionButton1.Value = True TextBox_Nom.Value = "" TextBox_Prenom.Value = "" TextBox_Adresse.Value = "" TextBox_Lieu.Value = "" ComboBox_Pays.ListIndex = -1

(11)

Vue d'ensemble

Pour terminer, voici le code complet ainsi que le fichier :

Private Sub CommandButton_Fermer_Click()

Unload Me

End Sub

Private Sub UserForm_Initialize() 'Liste des 231 pays de la feuille "Pays"

For i = 1 To 231

ComboBox_Pays.AddItem Sheets("Pays").Cells(i, 1)

Next

End Sub

Private Sub CommandButton_Ajouter_Click()

'Coloration des Labels en noir

Label_Nom.ForeColor = RGB(0, 0, 0) Label_Prenom.ForeColor = RGB(0, 0, 0) Label_Adresse.ForeColor = RGB(0, 0, 0) Label_Lieu.ForeColor = RGB(0, 0, 0) Label_Pays.ForeColor = RGB(0, 0, 0) 'Contrôles de contenu

If TextBox_Nom.Value = "" Then 'SI pas de "nom" ...

Label_Nom.ForeColor = RGB(255, 0, 0) 'Label "nom" en rouge

ElseIf TextBox_Prenom.Value = "" Then

Label_Prenom.ForeColor = RGB(255, 0, 0)

ElseIf TextBox_Adresse.Value = "" Then

Label_Adresse.ForeColor = RGB(255, 0, 0)

ElseIf TextBox_Lieu.Value = "" Then

Label_Lieu.ForeColor = RGB(255, 0, 0)

ElseIf ComboBox_Pays.Value = "" Then

Label_Pays.ForeColor = RGB(255, 0, 0) Else

'Si le formulaire est complet, on insère les valeurs sur la feuille Dim no_ligne As Integer, civilite As String

'Choix de civilité

For Each bouton_civilite In Frame_Civilite.Controls

If bouton_civilite.Value Then

civilite = bouton_civilite.Caption

End If

Next

'no_ligne = N° de ligne de la dernière cellule non vide de la colonne +1 no_ligne = Range("A65536").End(xlUp).Row + 1 'Insertion des valeurs sur la feuille

Cells(no_ligne, 1) = civilite Cells(no_ligne, 2) = TextBox_Nom.Value Cells(no_ligne, 3) = TextBox_Prenom.Value Cells(no_ligne, 4) = TextBox_Adresse.Value Cells(no_ligne, 5) = TextBox_Lieu.Value Cells(no_ligne, 6) = ComboBox_Pays.Value

'Après insertion, on remet les valeurs initiales

(12)

TextBox_Nom.Value = "" TextBox_Prenom.Value = "" TextBox_Adresse.Value = "" TextBox_Lieu.Value = "" ComboBox_Pays.ListIndex = -1 End If End Sub Le fichier : controles_exercice2.xls

Cours VBA : utilisations des

tableaux

Les tableaux sont des "variables" qui permettent de stocker une multitude de valeurs. Nous avons effleuré le sujet à la leçon sur les variables, nous allons maintenant l'approfondir ...

Intérêt des tableaux

Imaginez que dans une procédure vous ayez besoin de stocker 500 valeurs. S'il fallait créer 500 variables pour stocker toutes ces valeurs, cela deviendrait très compliqué, tandis qu'avec un tableau, le stockage et l'utilisation de ces valeurs seront grandement simplifiés.

Le second intérêt des tableaux est leur "rapidité". Parcourir un tableau de données demande beaucoup moins de temps que parcourir un "tableau" (composé de cellules) sur une feuille Excel ...

Rien de tel qu'un exemple pour mieux comprendre ...

Sur la première feuille ("BD") : une base de données de 5000 lignes sur 3 colonnes :

(13)

Sur la seconde feuille : un "tableau" récapitulatif où seront comptabilisés les "OUI" en fonction des années et des clients :

Dans le cas présent, la procédure va parcourir la base de données en boucle et comptabilisera pour chaque année et chaque n° de client le nombre de "OUI" avant de l'entrer dans la cellule correspondante.

(14)

Sans utiliser de tableau, il faudra 131.44 secondes à Excel pour exécuter la procédure :

En enregistrant d'abord la base de données (de la feuille "BD") dans un tableau et en effectuant ensuite les mêmes calculs (en utilisant le tableau à la place de la base de données de la feuille "BD"), il ne faudra que 1.74 secondes pour exécuter la procédure :

(15)

Et si l'on décide d'optimiser la procédure en n'enregistrant que les données avec les "OUI" dans le tableau (ce qui représente environ le 3/4 des données), 1.02 secondes suffisent :

(16)

Dans cet exemple, l'utilisation d'un tableau a permis d'exécuter la procédure environ 128x plus rapidement et cette différence peut encore augmenter sensiblement lorsque l'on travaille avec plusieurs bases de données en même temps (voir un second exemple).

Vous l'avez compris, l'utilisation de tableaux peut vraiment faire la différence.

Cet exemple sera détaillé en fin de leçon ...

Déclaration d'un tableau

Voici quelques exemples de déclarations (si les 2 premiers ne sont pas clairs pour vous, relisez ceci) :

'Exemple de déclaration d'un tableau à 1 dimension

Dim tab1(4)

'Exemple de déclaration d'un tableau à 2 dimensions

Dim tab2(6, 1)

'Exemple de déclaration d'un tableau dynamique

(17)

Si vous ne pouvez pas entrer de valeurs fixes (parce que cela dépend de la taille de la base de données par exemple), laissez les parenthèses vides.

Vous n'avez pas besoin de déclarer un type (string, long, etc.), dans bien des cas cela ralentirait votre procédure ...

Enregistrer des données dans un tableau

Commençons par enregistrer ces quelques données dans un tableau :

Nous voulons enregistrer ici 11 x 1 valeurs, il faudra donc créer un tableau à une dimension :

'Déclaration

Dim tab_exemple(10)

Rappelez-vous que la numérotation d'un tableau commence à 0 (c'est une norme en programmation, autant prendre de bonnes habitudes dès le début même s'il est possible de modifier cela en VBA).

Chaque élément du tableau reçoit ensuite sa valeur :

'Enregistrement des valeurs dans le tableau tab_exemple(0) = Range("A2")

tab_exemple(1) = Range("A3")

tab_exemple(2) = Range("A4") tab_exemple(3) = Range("A5") tab_exemple(4) = Range("A6") tab_exemple(5) = Range("A7") tab_exemple(6) = Range("A8") tab_exemple(7) = Range("A9")

(18)

tab_exemple(9) = Range("A11") tab_exemple(10) = Range("A12")

Vous pouvez utiliser, modifier chaque élément du tableau comme une variable. En voici un exemple avec tab_exemple(8) :

Sub enreg_tab()

'Déclaration

Dim tab_exemple(10)

'Enregistrement des valeurs dans le tableau tab_exemple(0) = Range("A2") tab_exemple(1) = Range("A3") tab_exemple(2) = Range("A4") tab_exemple(3) = Range("A5") tab_exemple(4) = Range("A6")

tab_exemple(5) = Range("A7")

tab_exemple(6) = Range("A8")

tab_exemple(7) = Range("A9") tab_exemple(8) = Range("A10") tab_exemple(9) = Range("A11") tab_exemple(10) = Range("A12")

'Test 1

MsgBox tab_exemple(8) '=> renvoie : 04.02.2016

'Modification de l'une des valeurs

tab_exemple(8) = Year(tab_exemple(8))

'Test 2

MsgBox tab_exemple(8) '=> renvoie : 2016

End Sub

Pour enregistrer ce même tableau plus rapidement, une boucle For est toute indiquée :

'Déclaration

Dim tab_exemple(10)

'Enregistrement des valeurs dans le tableau

For i = 0 To 10

tab_exemple(i) = Range("A" & i + 2)

Next

Cours VBA : utilisations des

tableaux (suite)

(19)

Pour enregistrer plusieurs colonnes de données, une dimension supplémentaire est nécessaire. En voici un exemple :

Enregistrement des données dans un tableau à 2 dimensions :

'Déclaration

Dim tab_exemple(10, 2) 'Tableau de 11 x 3 "cases" 'Enregistrement des valeurs dans le tableau

For i = 0 To 10

tab_exemple(i, 0) = Range("A" & i + 2)

tab_exemple(i, 1) = Range("B" & i + 2) tab_exemple(i, 2) = Range("C" & i + 2)

Next

Et quelques exemples de valeurs :

MsgBox tab_exemple(0, 0) '=> renvoie : 11.03.2026 MsgBox tab_exemple(0, 1) '=> renvoie : 24

MsgBox tab_exemple(9, 2) '=> renvoie : NON MsgBox tab_exemple(10, 2) '=> renvoie : OUI

Le tableau dynamique

Imaginons que cette même base de données soit régulièrement mise à jour et que l'on ne puisse donc pas entrer de valeurs fixes à la déclaration ...

(20)

Pour connaître le n° de ligne de la dernière cellule d'un bloc de cellules non vides, autrement dit, la dernière ligne de notre base de données, utilisez cette formule :

derniere_ligne = Range("A1").End(xlDown).Row

Si vous entrez une variable lors de la déclaration, Excel ne l'acceptera pas. Déclarez un tableau dynamique (parenthèses vides), puis définissez ses dimensions avec Redim :

Dim tab_exemple()

ReDim tab_exemple(derniere_ligne - 2, 2)

De cette manière vous enregistrerez automatiquement toutes les lignes de la base de données dans le tableau :

Sub enreg_tab()

derniere_ligne = Range("A1").End(xlDown).Row 'Dernière ligne de la base de données

Dim tab_exemple()

ReDim tab_exemple(derniere_ligne - 2, 2)

'Enregistrement des valeurs dans le tableau

For i = 0 To derniere_ligne - 2

tab_exemple(i, 0) = Range("A" & i + 2) tab_exemple(i, 1) = Range("B" & i + 2) tab_exemple(i, 2) = Range("C" & i + 2) Next

End Sub

Ubound

Dans l'exemple ci-dessus, le dernier n° de notre tableau était derniere_ligne - 2 :

For i = 0 To derniere_ligne - 2

(21)

For i = 0 To UBound(tab_exemple)

Cette fonction renvoie le plus grand n° pour une dimension choisie (par défaut la première).

Quelques exemples pour mieux comprendre :

Sub enreg_tab()

Dim tab_exemple(10, 2)

MsgBox UBound(tab_exemple) '=> renvoie : 10 MsgBox UBound(tab_exemple, 1) '=> renvoie : 10 MsgBox UBound(tab_exemple, 2) '=> renvoie : 2

End Sub

Enregistrer une plage de cellules

Il est possible d'enregistrer une plage de cellules dans un tableau sans passer par une boucle.

'Déclaration

Dim tab_exemple(10, 2) 'Tableau de 11 x 3 "cases" 'Enregistrement des valeurs dans le tableau

For i = 0 To 10

tab_exemple(i, 0) = Range("A" & i + 2)

tab_exemple(i, 1) = Range("B" & i + 2) tab_exemple(i, 2) = Range("C" & i + 2)

Next

Le code ci-dessus peut être remplacé par :

'Déclaration

Dim tab_exemple()

'Enregistrement des valeurs dans le tableau tab_exemple = Range("A2:C12").Value

Même si au premier abord cette seconde méthode semble séduisante, elle peut dans bien des cas vous faire perdre plus de temps que la première méthode ... En enregistrant vos données dans le tableau de cette manière, le premier n° n'est pas 0 mais 1, cela peut être source de confusion ... De plus, si au cours du développement vous choisissez de n'enregistrer dans le tableau que les données répondant à certains critères (ou effectuer toute autre opération), vous aurez besoin de tout réécrire avec une boucle ...

(22)

Cette seconde méthode reste tout de même intéressante lorsque vous avez besoin d'enregistrer l'ensemble du contenu d'une grande base de données, car plus rapide qu'avec une boucle (gain d'environ 0.2 secondes pour 15'000 entrées).

Array

Vous aurez peut-être parfois besoin de créer un tableau contenant des données "fixes".

Une solution consiste à l'écrire ligne par ligne :

Dim fr(5) fr(0) = "SI" fr(1) = "RECHERCHEV" fr(2) = "SOMME" fr(3) = "NB" fr(4) = "ESTNUM" fr(5) = "STXT"

Heureusement, vous pouvez vous simplifier la tâche en utilisant Array :

fr = Array("SI", "RECHERCHEV", "SOMME", "NB", "ESTNUM", "STXT")

Voici un exemple d'utilisation de la fonction Replace (utile pour mieux comprendre l'exemple suivant) :

Sub remplacement()

Dim chaine_a_traiter As String

'Une chaîne pour cet exemple

chaine_a_traiter = "Hello World !"

'Remplacement de "World" par "toi" dans la chaîne de caractères

chaine_a_traiter = Replace(chaine_a_traiter, "World", "toi") 'La chaîne après remplacement

MsgBox chaine_a_traiter '=> renvoie "Hello toi !"

End Sub

Maintenant si l'on veut remplacer une série de valeurs par une autre série, l'utilisation de tableaux (Array) est toute indiquée :

Sub traduction() 'Exemple simplifié de traduction FR-EN de formules

Dim chaine_a_traiter As String

'Une chaîne pour cet exemple

chaine_a_traiter = "Formule à traduire : SOMME(SI(ESTNUM(A1:E1);A1:E1;0))"

'Les 2 séries de valeurs

fr = Array("SI", "RECHERCHEV", "SOMME", "NB", "ESTNUM", "STXT") en = Array("IF", "VLOOKUP", "SUM", "COUNT", "ISNUMBER", "MID")

(23)

'Remplacement de "SI" par "IF", de "RECHERCHEV" par "VLOOKUP", etc. For i = 0 To UBound(fr)

chaine_a_traiter = Replace(chaine_a_traiter, fr(i), en(i)) Next

'La chaîne après les remplacements

MsgBox chaine_a_traiter '=> renvoie "Formule à traduire : SUM(IF(ISNUMBER(A1:E1);A1:E1;0))"

End Sub

Split

La fonction Split permet de convertir une chaîne de caractères en un tableau. Pour convertir cette chaîne de caractères en tableau :

chaine = "SI/RECHERCHEV/SOMME/NB/ESTNUM/STXT"

Utilisez la fonction Split et définissez le séparateur :

fr = Split(chaine, "/")

Le tableau fr renverra les valeurs suivantes :

MsgBox fr(0) '=> renvoie : SI

MsgBox fr(1) '=> renvoie : RECHERCHEV MsgBox fr(2) '=> renvoie : SOMME MsgBox fr(3) '=> renvoie : NB MsgBox fr(4) '=> renvoie : ESTNUM MsgBox fr(5) '=> renvoie : STXT

Les 3 tableaux suivants renvoient également les mêmes valeurs :

fr = Array("SI", "RECHERCHEV", "SOMME", "NB", "ESTNUM", "STXT") fr = Split("SI,RECHERCHEV,SOMME,NB,ESTNUM,STXT", ",")

fr = Split("SI RECHERCHEV SOMME NB ESTNUM STXT", " ")

L'exemple suivant renvoie la 3e valeur de la chaîne de caractères :

MsgBox Split("SI,RECHERCHEV,SOMME,NB,ESTNUM,STXT", ",")(2) '=> renvoie : SOMME

(24)

Cette fonction permet d'assembler les valeurs d'un tableau en une chaîne de caractères.

Références

Documents relatifs

11 Si l’on tente alors, à la lumière de ces synthèses, de mesurer le chemin parcouru entre les années 1960 et la décennie 1990, il faut d’abord relever un changement

Este trabalho mostra a preocupação com os avanços em uma área problema relacionada a apresentação de informações sobre recursos naturais para serem usadas em planejamento

Ontario (Procureur général), préc., note 42, par.. leurs libertés fondamentales, mais de les renforcer considérablement. À cet égard, le contexte de l’affaire joue pour beaucoup.

Based on these frameworks, QoCIM is able to qualify both context data acquired from context producers and high level context information delivered to end-user applications

In this paper, we will focus on localization using light measurements over different wavelengths, meaning different colors, and in our experiment the red, green and blue (RGB)

Both the duration and the magnitude of bufferbloat episodes depend on the network environment users connect from: the size of the buffer, the connection speed (i.e., the buffer

Déve- loppé à partir de l’année 1998 dans le cadre d’un Programme Collectif de Re- cherche pour répondre à une question posée sur l’origine de la grande trans- humance,

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des