Modifier une Variable Dynamiquement [Résolu]

Signaler
Messages postés
486
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
-
Messages postés
486
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
-
Bonjour

Je veux faire une appli en VB.net, qui affiche les CA des magasins dans un DataGridVew.
Je veux pouvoir choisir les et le nombre de magasin a afficher dans mon tableau.

Voici une capture de mon appli.

Voici une partie de mon code :

'MagasinCLB= CheckedListBox
        Dim Magasin(MagasinCLB.CheckedItems.Count - 1) AsString        Dim x, y AsInteger<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??> 

        For x = 0 To MagasinCLB.CheckedItems.Count - 1
            Magasin(x) = MagasinCLB.CheckedIndices.Item(x).ToString + 1
        Next

        dgvMois.ColumnHeadersVisible = True
        Dim columnHeaderStyle AsNew DataGridViewCellStyle()
        columnHeaderStyle.BackColor = Color.Beige
        columnHeaderStyle.Font = New Font("Verdana", 10, FontStyle.Bold)
        dgvMois.ColumnHeadersDefaultCellStyle = columnHeaderStyle
        dgvMois.ColumnCount = MagasinCLB.CheckedItems.Count + 1
        dgvMois.Columns(0).Name = "Jour du mois"
        dgvMois.Columns(0).Width = 150 

        For y = 1 To MagasinCLB.CheckedItems.Count
            dgvMois.Columns(y).Name = MagasinCLB.CheckedItems.Item(y - 1)
            dgvMois.Columns(y).Width = 200
        Next

        x = MagasinCLB.CheckedItems.Count
        Dim Champ(x) AsString = {"Valeur1", "Valeur2", "Valeur3"}
        Dim DateJourInt1 AsString() = {Champ}
        Me.dgvMois.Rows.Add(DateJourInt1)

 

J'ai une erreur sur le bas de mon code, voici les messages d'erreurs

MA QUESTION:

Comment remplir ma variable "Champ" dynamiquement , en fonction du nombre de magasin coché?

Dans mon exemple , J'ai choisi 3 magasins, j'ai donc mis manuellement 3 Valeurs dans "Champs".

Et ma liste de magasin n'est pas exhaustive.

Merci d'avance

MANUANTIBES [:p]

4 réponses

Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Bonjour,
declares ton tableau ensuite tu défini ses limites

 Dim Champ() as String
 Redim Preserve Champ(x)
 ...(x etant le nombre de magasin cochés)

chaibat
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Bonsoir Manu,

Est-ce que ta variable DateJourInt est,
elle aussi , un tableau ?
Si oui
tu es toujours dans le même cas de figure
Il faut declarer d' abord .
- Dim DateJourInt ()  As String
  cette ligne de déclaration indique qu' il ' agit
  d' un tableau et de type String


 ensuite :
 - soit définir la dimension et remplir au fur et à mesure
  du traitement en incrémentant
 
  Redim Preserve DateJourInt (x+1)
  l' utilisation de Preserve comme son nom l' indique
  preserve toutes les valeurs DateJourInt (x)


 - soit définir la dimension et remplir d' un coup en
 utilisant une boucle par exemple.
 
 X étant la dimension de ton tableau Champ
 Redim Preserve DateJourInt (X)


For i =1 to X
  DateJourInt (i)=Champ(i)
next


>......




Si
c' est une simple variable chaine
Dim DateJourInt as String
et l' assignation se fait le plus simplement du monde


xL est l' index d' une ligne quelconque
DateJourInt=Champ(xL)


j' espère avoir bien compris ta question et d' y avoir répondu
sinon reposes là en plus clair


a+
Messages postés
486
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
4
Salut Chaibat05

Merci pour ta reponse.

Par contre j'ai encore un probleme sur comment mettre ma variable  DateJourInt .
Dim DateJourInt AsString() = {Format(date_deb.AddDays(x).ToString("dddd dd")), Champ(0), Champ(1),....  (ça marche pas cela)

Comment je dois renseigner  ma variable   avec mes
 Champs(x) ici.

J'ai bien penser faire un for , mais ça ne marche pas

Dim DateJourInt
As
String() = {Format(date_deb.AddDays(x).ToString(
"dddd dd"))}

For v = 0
To MagasinCLB.CheckedItems.Count

Dim DateJourInt
As
String() += {,Champ(v)}

Next v

et envore merci pour ta première reponse.
Sorry d'avoir mis aussi long temp à repondre

MANUANTIBES [:p]
Messages postés
486
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
23 mars 2019
4
Merci , la premiere solution de ta derniere reponse est la bonne.
Mais je m'entete a toujours mettre les { } avec Champ(x).

voici mon code qui marche:

'MagasinCLB= CheckedListBox
Dim Magasin(MagasinCLB.CheckedItems.Count - 1)
As
String
Dim x, y, v, NumX
As
Integer

For x = 0
To MagasinCLB.CheckedItems.Count - 1
Magasin(x) = MagasinCLB.CheckedIndices.Item(x).ToString + 1

Next

dgvMois.ColumnHeadersVisible =
True
Dim columnHeaderStyle
As
New DataGridViewCellStyle()
columnHeaderStyle.BackColor = Color.Beige
columnHeaderStyle.Font =
New Font(
"Verdana", 10, FontStyle.Bold)
dgvMois.ColumnHeadersDefaultCellStyle = columnHeaderStyle
dgvMois.ColumnCount = MagasinCLB.CheckedItems.Count + 1
dgvMois.Columns(0).Name =
"Jour du mois"
dgvMois.Columns(0).Width = 150

For y = 1
To MagasinCLB.CheckedItems.Count
dgvMois.Columns(y).Name = MagasinCLB.CheckedItems.Item(y - 1)
dgvMois.Columns(y).Width = 200

Next

Numx = MagasinCLB.CheckedItems.Count

Dim Champ()
As
String
ReDim
Preserve Champ(Numx)

Dim DateJourInt()
As
String
ReDim
Preserve DateJourInt(Numx)

Array.Clear(Champ, 0, NumX + 1)

Dim d
As
New System.DateTime(Format(date_fin,
"yyy"), Format(date_fin,
"MM"), Format(date_fin,
"dd"))Table3_ChiffreTableAdapter.FillByDate(
Me.DBCADataSet.Table3_Chiffre, date_deb, date_fin)

For x = 0
To d.Subtract(date_deb).Days
Array.Clear(Champ, 0, NumX + 1)
Array.Clear(DateJourInt, 0, NumX + 1)

         For v = 0
To MagasinCLB.CheckedItems.Count - 1

                  For y = 0
To Table3_ChiffreBindingSource.Count - 1

                  If Magasin(v) = Table3_ChiffreBindingSource.List.Item(y).Row.ItemArray(4)
And Format(date_deb.AddDays   (x)) =Table3_ChiffreBindingSource.List.Item(y).Row.ItemArray(1)
And 3 = Table3_ChiffreBindingSource.List.Item(y).Row.ItemArray(3)
Then
                  Champ(v) = Table3_ChiffreBindingSource.List.Item(y).Row.ItemArray(2)

                  End
If
                  Next y

      Next v

DateJourInt(0) = Format(date_deb.AddDays(x).ToString(
"dddd dd"))

For w = 1
To MagasinCLB.CheckedItems.Count
DateJourInt(w) += Champ(w - 1)

Next w

Me.dgvMois.Rows.Add(DateJourInt)

Encore merci Chaibat05

MANUANTIBES [:p]