Boànjour,
peux-tu s'il te plait insérer ceci juste avant ta double boucle :
et nous dire ce que tu as à l'affichage ?Code:
1
2 MsgBox MSFlexGrid1.Rows & " " & MSFlexGrid1.Cols & vbCrLf & _ MSFlexGrid1.FixedCols & " " & MSFlexGrid1.FixedCols
Version imprimable
Boànjour,
peux-tu s'il te plait insérer ceci juste avant ta double boucle :
et nous dire ce que tu as à l'affichage ?Code:
1
2 MsgBox MSFlexGrid1.Rows & " " & MSFlexGrid1.Cols & vbCrLf & _ MSFlexGrid1.FixedCols & " " & MSFlexGrid1.FixedCols
Bonsoir UcFoutu, merci de venir à notre secour,
Mais TextMatrix() agit aussi bien sur les colonnes et lignes que sur les fixes,
Il y à quelque chose que notre ami n'explique pas.
Je pense tout simplement qu'il ne pointe pas vers une grille existante ou chargée...;)
on va y aller pas à pas... et on va finir par voir où le bât blesse...
Je vous laisserai ensuite à votre discussion, car je connais mal Excel...
y me vient une idée, où tu à mis la fonction ?
j'suis plus au boulot, j'ai pas ma macro, on vois cela demain.
Ont ne pense pas toujours à expliquer jusque la dernière virgule, dans mon poste précédant j'ai dit Remplace par le nom de la UserForme et je parie que tu a mis...
mais tu doit mettre partout avant MSFlexGrid1...(bien entendu si ta Userform à le nom UserForm1)Code:Sheets("UserForm1").MSFlexGrid1.Rows
Ca devrait marcher maintenant.:PCode:UserForm1.MSFlexGrid1.Rows
A+
:lol: ça marche mieux comme ça mais jai une autre erreur a la ligne suivante
UcFoutu, t'entend quoi par boucle??? Dans le Workbook, dans le UserForm???Code:MSFlexGrid1.TextMatrix(Ligne, Colonne) = Cells(Ligne + 1, Colonne + 1).Value
Alors la sauvegarde fonctionne
seulement mon FlexGrid n'est pas re-rempli avec les valeurs sauvegarders, il faudrait donc que j'importe les donner du tableau Excel dans mon FlexGrid.Hélas mes compétences ne me le permettent pas 8O:(Code:UsFrm.MSFlexGrid1.TextMatrix(Ligne, Colonne) = Cells(Ligne + 1, Colonne + 1).Value
Tu as vérifié que les données sont bien sur la Feuil3 ?
Pour recharger les données dans le grid cela se passe dans le Workbook_Open() que tu doitr adapter comme l'autre fonction.
Voyons si tu l'a bien mis où il fallai.
Dans l'IDE et l'explorateur de feuille tu a le nom des feuilles et en dessous tu a ThisWorkbook > Double clic dessus > dans la feuille qui s'ouvre il y a 2 combos dans le haut, dans celui de gauche tu selectionne WorkBook, la feuille se rempli avec
Entre les lignes tu met le code ci-dessous pour avoir ce résultatCode:
1
2
3 Private Sub Workbook_Open() End Sub
Tu dit...Code:
1
2
3
4
5
6
7
8
9 Private Sub Workbook_Open() Sheets("Feuil3").Select For Ligne = 0 To UsFrm.MSFlexGrid1.Rows - 1 For Colonne = 0 To UsFrm.MSFlexGrid1.Cols - 1 UsFrm.MSFlexGrid1.TextMatrix(Ligne, Colonne) = Cells(Ligne + 1, Colonne + 1).Value Next Colonne Next Ligne End Sub
J'ai deja rentré ce code, et ma grid ne se re-rempli pas :s
Suis les renseignements donné Svp, tu ne les as surement pas mis à la bonne place
Voila ce que j'ai dans "Thisworkbook"Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 Private Sub Workbook_Activate() UsFrm.Show End Sub Private Sub Workbook_Open() Sheets("Feuil3").Select For Ligne = 0 To UsFrm.MSFlexGrid1.Rows - 1 For Colonne = 0 To UsFrm.MSFlexGrid1.Rows - 1 UsFrm.MSFlexGrid1.TextMatrix(Ligne, Colonne) = Cells(Ligne + 1, Colonne + 1).Value Next Colonne Next Ligne End Sub
et ceci est une partie du code de mon UserForm
Code:
1
2
3
4
5
6
7
8
9
10
11
12 Sub MemoGrid() 'A envoyer avant de mémoriser le classeur.. Dim Ligne As Integer, Colonne As Integer Sheets("Feuil3").Select For Ligne = 0 To UsFrm.MSFlexGrid1.Rows - 1 For Colonne = 0 To UsFrm.MSFlexGrid1.Rows - 1 Cells(Ligne + 1, Colonne + 1).Value = UsFrm.MSFlexGrid1.TextMatrix(Ligne, Colonne) Next Colonne Next Ligne 'pour cacher la "feuil3" Sheets("Feuil1").Select End Sub
Edit : ET mes donnés sont bien sur la "feuil3"Code:
1
2
3
4
5
6
7
8 Private Sub CmdSave_Click() Call MemoGrid ChDir "U:\JABIL\Methodes\CMS\MACRO" ActiveWorkbook.SaveAs Filename:= _ "U:\JABIL\Methodes\CMS\MACRO\Macro Fiche Instruction.xls", FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False End Sub
ajoute comme ci dessous..
Tu sauve et tu réouvre le classeur, dit-moi si ça s'arrète sur le stop (surligné en jaune)Code:
1
2
3
4
5
6
7
8
9
10 Private Sub Workbook_Open() Sheets("Feuil3").Select STOP For Ligne = 0 To UsFrm.MSFlexGrid1.Rows - 1 For Colonne = 0 To UsFrm.MSFlexGrid1.Rows - 1 UsFrm.MSFlexGrid1.TextMatrix(Ligne, Colonne) = Cells(Ligne + 1, Colonne + 1).Value Next Colonne Next Ligne End Sub
Oui en effet ça s'arrete
J'ai fini le boulot, je vois ça lundi
encore merci pr l'aide, il ne doit pas manqué grand chose
Modifie comme ca, tu sauve et tu réouvre le classeurCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Private Sub Workbook_Open() Sheets("Feuil3").Select STOP UsFrm.show For Ligne = 0 To UsFrm.MSFlexGrid1.Rows - 1 For Colonne = 0 To UsFrm.MSFlexGrid1.Rows - 1 UsFrm.MSFlexGrid1.TextMatrix(Ligne, Colonne) = Cells(Ligne + 1, Colonne + 1).Value debug.Print UsFrm.MSFlexGrid1.TextMatrix(Ligne, Colonne) debug.print Cells(Ligne + 1, Colonne + 1).Value Next Colonne Next Ligne End Sub
bon, quand tu est sur le stop, tu tape F8.. F8...F8.. etc et regarde dans la fenêtre 'Exécution' si les données sont les bonnes
Aucun message dans ma fenêtre "execution"
quand tu est sur le stop, tape dans la fenêtre exécution..
valider par EnterCode:print UsFrm.MSFlexGrid1.Rows
et tu dit..
reponse
print UsFrm.MSFlexGrid1.Rows
1
donc il n'y a que 2 lignes ?
Et je ne sais pas comment cette erreur n'a pas été détectée plus tôt, change la ligne
Ensuite quand tu est sur le stop tu tape dans Exécution..Code:
1
2
3 For Colonne = 0 To UsFrm.MSFlexGrid1.Rows - 1 'par For Colonne = 0 To UsFrm.MSFlexGrid1.Cols - 1
et tu dit..Code:print UsFrm.MSFlexGrid1.Cols
print UsFrm.MSFlexGrid1.Cols
5
A quoi cette opération sert-elle?