Bonjour,
Dans ce petit tutoriel, je vous propose de copier l'intégralité d'une gridview dans le presse papier pour pouvoir le coller dans un éditeur de texte pour créer un fichier CSV par exemple.
A) création de l'interface.
Posez une gridview et un bouton
renommez la gridview en 'grille' et le button1 en Bcopy.
B) Ecriture du code.
Dans l'évènement Bcopy_Click(), écrivez ce code :
Dim maliste As String
Dim a As Integer
maliste = Null
For a = 0 To (grille.Rows.Max - 1)
maliste = maliste & grille[a, 0].Text & ";" & grille[a, 1].Text & ";" & grille[a, 2].Text & ";" & grille[a, 3].Text & ";" & grille[a, 4].Text & ";" & grille[a, 5].Text & ";" & grille[a, 6].Text & ";" & grille[a, 7].Text & ";" & Chr$(10)
Next
Clipboard.Copy(maliste)
End Select
Le texte ainsi copié sera toutes les cellules des lignes séparées par un point virgule sur tout le tableau.
A votre convenance, vous pouvez coller ce texte dans une textarea par exemple avec la commande:
TextArea1.text = Clipboard.Paste()
ou dans une autre application (éditeur de texte) par un clic droit de la souris et 'Coller'
Merci pour votre attention.

Lire la suite de GB3- IDE vs CODE
Lire la suite de GB3- Créer un contrôle.
Et bien oui , il est tout à fait possible de se passer du mot THEN dans une boucle IF ENDIF
If tdisplay.Text = "ho" Then
Print "holala"
Else
Print "mama mia"
Endif
et
If tdisplay.Text = "ho"
Print "holala"
Else
Print "mama mia"
Endif
produiront le même résultat.
Merci pour votre attention.

Bonjour,
Vous connaissez certainement la selection à choix multiples SELECT CASE avec ce petit exemple ci dessous :
Dim mytext As String
Select Case mytext
Case "ho"
Print "ho"
Case "ha"
Print "ha"
End Select
Remarque : Cet exemple n'a pas grand intérêt au niveau code mais est juste là à but pédagogique.
Saviez-vous qu'il est possible de définir un choix par défaut si aucun cas n'est attribué à votre variable?
Il suffit d'utiliser l'instruction DEFAULT et dorrénavant, si aucun cas ne correspond, la valeur par défaut sera lue comme ceci :
Dim mytext As String
Select Case mytext
Case "ho"
Print "ho"
Case "ha"
Print "ha"
Default
Print "by default"
End Select
si mytext prend la valeur "georges" par exemple, après moulinette dans ce code, le résultat sera "by default"
Merci pour votre attention

Bonjour,
Valaquarus nous propose ici une calculatrice en gambas3.
La version téléchargeable originale fonctionne avec gambas 3.15 ou supérieur.
Pour utiliser cette application sous gambas 3.14.3 ou inférieur, téléchargez le fichier source
ici . Merci à Philippe pour cette appli.
Le code de l'application ici :
' Gambas class file
PRIVATE i AS INTEGER '<---------------------------------------------- indice du tableau de valeurs
PRIVATE fValeur AS NEW Float[] '<------------------------------------ tableau de float, de taille indéfinie
PRIVATE signe AS STRING '<------------------------------------------ signe des opérations
PRIVATE iVirgule AS INTEGER '<------------------------------------- pour suivre la virgule
PRIVATE bChiffre AS BOOLEAN '<------------------------------------- drapeau boolean indiquant qu'un chiffre est rentré
PRIVATE iPosVirgule AS INTEGER '<---------------------------------- position de la virgule dans le mot
PRIVATE iLongMot AS INTEGER '<------------------------------------- longeur du mot
PRIVATE iNextCharPos AS INTEGER '<---------------------------------- position du prochain caractère
'<------------------------------------------------------------------- création d'un Group pour les chiffres nommé Chiffres
'<------------------------------------------------------------------- création d'un Group pour les opérations nommé Signes
PUBLIC SUB btnClose_Click()
ME.Close()
END
PUBLIC SUB Form_Open()
i = 0 '<---------------------------------------------------------- initialisation diverse
iVirgule = 0
END
PUBLIC SUB btnEffacer_Click()
tbAffichage.Text = String.Mid(tbAffichage.Text, 1, -1)
' tbAffichage.Text = String.Left(tbAffichage.Text, -1)
' Print "-text-"; tbAffichage.Text
iLongMot -= 1
IF iLongMot > 0 THEN Insertion() ELSE RETURN
IF iPosVirgule = iLongMot THEN iVirgule = 0
END
PUBLIC SUB Insertion()
fValeur.Add(Val(tbAffichage.Text), i) '<------------------------ récupération de la valeur affichée
posVirgule(tbAffichage) '<------------------------------------- position de la virgule dans le mot
bChiffre = TRUE '<------------------------------------------- drapeau levé
' Print i; "-insert- "; fValeur[i]
END
PUBLIC SUB Chiffres_Click() '<------------------------------------- évènement _Click() pour le Group Chiffres
IF LAST.text = "." OR LAST.text = "," THEN iVirgule += 1 '<------- une seule virgule possible
IF iVirgule > 1 THEN
RETURN
ELSE
tbAffichage.Text &= LAST.text '<------------------------------- concaténation dans textbox1
Insertion() '<------------------------------------------------- insertion de la valeur dans tableau
' bChiffre = True '<------------------------------------------- drapeau levé
ENDIF
END
PUBLIC SUB Signes_Click() '<---------------------------------------- évènement _Click() pour le Group Signes
IF bChiffre = TRUE THEN INC i ELSE RETURN
SELECT CASE LAST.Text '<---------------------------------------- en fonction du dernier texte des signes
CASE ELSE
fValeur.Add(fValeur[i - 1], i) '<--------------------------- on récupère la deuxième valeur (inc i au début)
signe = LAST.Text '<---------------------------------------- on récupère signe pour l'évènement btnEgal_Click()
tbAffichage.Clear
bChiffre = FALSE
END SELECT
END
PUBLIC SUB btnEgal_Click() '<---------------------------------------- évènement _Click() lors de l'appui sur "="
IF signe <> "" THEN INC i ELSE RETURN
SELECT CASE signe '<---------------------------------------------- les opérations à faire en fonction du signe cliqué
CASE "+"
fValeur.Add(fValeur[i - 2] + fValeur[i - 1], i)
CASE "-"
fValeur.Add(fValeur[i - 2] - fValeur[i - 1], i)
CASE "/"
IF fValeur[i - 1] <> 0 THEN fValeur.Add(fValeur[i - 2] / fValeur[i - 1], i) ELSE RETURN '<-- pas de division par zéro
CASE "*"
fValeur.Add(fValeur[i - 2] * fValeur[i - 1], i)
END SELECT
tbAffichage.text = Str$(fValeur[i]) '<-------------------------- localisation Europa
Insertion() '<---------------------------------------------------- insertion de la valeur dans le tableau
signe = "" '<---------------------------------------------------- pour empêcher de revenir sans passer par un autre signe
iVirgule = 0
' Print i; " -égal- "; fValeur[i]
END
PUBLIC SUB Form_KeyPress() '<---------------------------------------- saisie clavier
DIM vText AS VARIANT
DIM cChiffres AS String[] = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ","]
DIM cSignes AS String[] = ["+", "-", "*", "/"]
vText = Key.Text '<---------------------------------------------- touche pressée
IF vText MATCH "." THEN vText = Replace(vText, ".", ",") '<------- localisation Europa
IF cChiffres.Exist(vText) THEN
LAST.text = vText
Chiffres_Click()
ENDIF
IF cSignes.Exist(vText) THEN
LAST.text = vText
Signes_Click()
ENDIF
ME.Text = "Calculatrice ++" '<---------------------------------- pour ne pas afficher vText dans le titre du formulaire
IF key.Code = key.Return OR key.Code = key.Enter THEN btnEgal_Click()
IF key.code = Key.Esc THEN btnCancel_Click()
IF Key.Code = Key.Backspace OR Key.Code = Key.Delete THEN btnEffacer_Click()
END
PUBLIC SUB posVirgule(monObjet AS OBJECT)
SELECT CASE System.Language
CASE "en_US.UTF-8"
iPosVirgule = String.RInStr(monObjet.Text, ".", 0)
iNextCharPos = iPosVirgule + 1
iLongMot = String.Len(monObjet.Text)
CASE ELSE '<----------------------------------------------------------- pour Europa
iPosVirgule = String.RInStr(monObjet.Text, ",", 0) '<------------------ pour déterminer la position de la virgule
iNextCharPos = iPosVirgule + 1 '<----------------------------------- position du prochain caractère
iLongMot = String.Len(monObjet.Text) '<----------------------------- longeur du mot
END SELECT
' Print iPosVirgule; " ~ "; iLongMot
END
PUBLIC SUB btnCancel_Click()
tbAffichage.Clear
i = 0
iVirgule = 0
fValeur.Clear
bChiffre = FALSE
END