Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Si l'un ou plusieurs textboxs changent copier vers

28 réponses
Avatar
DOMINIQUE
Bonjour,
J'ai du mal à démarrer un code pouvez vous m'aider ou m'orienter sur ce
problème, merci.

J'ai un userform comprenant 4 frames dans c'est 4 frames se trouvent 60
textboxs. Ces textboxs sont alimentés par une toupie.
est il possible de créer un code qui dirait lors du changement par le bouton
toupie :
Si l'un ou plusieurs des textboxs des frames 2,3 et 4 ont été modifiés
copier dans la dernière ligne vide de la feuille "RecuperationDeDonnées"
tous les textboxs des frames 2,3 et 4 et que uniquement les textboxs
modifiés soit en caractères rouges.

Merci pour votre aide

8 réponses

1 2 3
Avatar
Daniel.C
Bonjour.
J'ai ajouté des lignes dans la macro "Spin_Inventaire_Change" pour
alimenter les textboxes avec leurs noms. Je les enlèverai quand tout
sera opérationnel. Le module d'alimentation est provisoirement
commenté.
J'avais un problème avec le premier Spin_Inventaire_Change puisque les
textboxes sont vides. J'ai testé le textbox "Te_AtribN1Biche"; s'il est
vide, je saute la partie test de modifs. Ce n'est peut-être pas
pertinent, si ce textbox n'est pas toujours rempli. Voici le classeur
modifié. Teste-le et une fois que tu l'auras validé, ajoute les
optionbuttons et renvoie le classeur.
http://www.cijoint.fr/cjlink.php?file=cj201002/cijMtie3tP.xlsm
Daniel


Je suis desolé de ne pas etre clair. Pour essaye de me faire comprendre je
vais t expliquer a quoi sert cet userform.

En réunion, cet userform sera projeté sur grand ecran. le spinbuton va
alimenter les données personne par personne.La personne, si elle est
présente, peut modifier les données donc je modifie les données directement
sur l userform. et la je dois sauvegarder ces données pour les modifier plus
tard sur un serveur (si elle sont rouges ca sera super car je vais modifier
plus de 1500 personnes). Quand je vais passer a la personne suivante en
cliquant sur le spinbouton elle enregistrera les données. le probleme si la
personne arrive en retard, par exemple, je vais revenir en arriere et sans
condition l userform va reenregistrer des données deja presentes. Donc c'est
pour ca si je met un option buton "present et un absent" qui seraient
decochés par défaut je pourrai revenir en arrière sans enregistrer les
données.

par exemple 4 personnes presentes (A B C et D) :
monsieur A present , je coche present on modifie 2/3 texbox je clic sur le
spin pour aller au suivant.toutes les données de l userform s'enregistrent.
Monsieur B absent , je coche absent je passe au suivant.les données ne s
'enregistre pas .
Monsieur C present pas de modification je coche present et le spinbouton
enregistre les données
Tiens au surprise monsieur B est arrivée en retard donc je remonte en arriere
avec le spin pour retrouver Mr B. je vais etre obligé de repassé par monsieur
C mais comme je vais rien cocher(ni present ni absent) il n y aura pas de
nouveau enregistrement de Mr C.
j arrive a Mr B la je coche present et ca va enregistrer les données quand je
clic sur le spin pour retrouver Mr D.

Voila ho lala j espere etre clair je suis desolé ca doit pas être difficile.


Avatar
DOMINIQUE
Bonjour Daniel,
Merci beaucoup pour ton travaille, j'essaye de comprendre ton travaille pour
évoluer mais pas facile.
Voici le lien avec quelques modifs :

http://www.cijoint.fr/cjlink.php?file=cj201002/cijPIt6DER.xlsm

j'ai rajouté 2 options bouton (présent absent) qui sont false par défaut
dans l'userform inizialise.
puis pour mieux comprendre j ai enlevé les formules de la feuille
calculateur et mis que des valeurs.
J'ai remarqué avec ton code quand j applique le spin button , les valeurs de
la feuille calculateur disparaissent et il ne faut pas car en cas de retour
en arrière, elle ne serait plus présente. je pense que cette ligne serai
bien la coupable : If test = False Then Rows(Ctr).Clear mais je n'ose pas
toucher à ton code.

ensuite j'ai essayé cette méthode .

Private Sub Spin_Inventaire_Change()

If Op_Absent = False And Op_Present = False Then

Call GestionDeSpinInvententaire

Else
Call ColoriagedesdonnéesSiChangement
Call recuperationDeDonnées

End If

End Sub

et en recuperant ton code qui je pense colorie les données en cas de
changement mais j ai une erreur
sur .Cells(Ctr, i).Font.ColorIndex = 3

Sub ColoriagedesdonnéesSiChangement()
Dim test As Boolean, Ctr As Integer
For Each f In Me.Controls
If TypeOf f Is Frame Then
If f.Name <> "Frame1" Then
For Each Item In f.Controls
If Left(Item.Name, 2) = "Te" Then
i = i + 1
.Cells(Ctr, i) = Item.Value
Var = Noms
If Valeurs(Application.Match(Item.Name, Noms,
0) - 1) _
<> Item.Value Then
test = True
.Cells(Ctr, i).Font.ColorIndex = 3
End If
End If
Next
End If
End If
Next f
If test = False Then Rows(Ctr).Clear
End With
End If

End Sub

Je pense que cette méthode serait idéale car je pourrai rajouter facilement
des données à enregistrer dans la feuil "recuperationDesDonnée"
autres que des texboxs . j aurais juste à logé dans le code
recuperationDeDonnées par exemple les valeurs des cases a cocher.
Dis moi ce que tu en pense!
Merci beaucoup pour tout ce travaille


"Daniel.C" a écrit dans le message de groupe de
discussion :
Bonjour.
J'ai ajouté des lignes dans la macro "Spin_Inventaire_Change" pour
alimenter les textboxes avec leurs noms. Je les enlèverai quand tout sera
opérationnel. Le module d'alimentation est provisoirement commenté.
J'avais un problème avec le premier Spin_Inventaire_Change puisque les
textboxes sont vides. J'ai testé le textbox "Te_AtribN1Biche"; s'il est
vide, je saute la partie test de modifs. Ce n'est peut-être pas pertinent,
si ce textbox n'est pas toujours rempli. Voici le classeur modifié.
Teste-le et une fois que tu l'auras validé, ajoute les optionbuttons et
renvoie le classeur.
http://www.cijoint.fr/cjlink.php?file=cj201002/cijMtie3tP.xlsm
Daniel


Je suis desolé de ne pas etre clair. Pour essaye de me faire comprendre
je vais t expliquer a quoi sert cet userform.

En réunion, cet userform sera projeté sur grand ecran. le spinbuton va
alimenter les données personne par personne.La personne, si elle est
présente, peut modifier les données donc je modifie les données
directement sur l userform. et la je dois sauvegarder ces données pour
les modifier plus tard sur un serveur (si elle sont rouges ca sera super
car je vais modifier plus de 1500 personnes). Quand je vais passer a la
personne suivante en cliquant sur le spinbouton elle enregistrera les
données. le probleme si la personne arrive en retard, par exemple, je
vais revenir en arriere et sans condition l userform va reenregistrer des
données deja presentes. Donc c'est pour ca si je met un option buton
"present et un absent" qui seraient decochés par défaut je pourrai
revenir en arrière sans enregistrer les données.

par exemple 4 personnes presentes (A B C et D) :
monsieur A present , je coche present on modifie 2/3 texbox je clic sur
le spin pour aller au suivant.toutes les données de l userform
s'enregistrent.
Monsieur B absent , je coche absent je passe au suivant.les données ne s
'enregistre pas .
Monsieur C present pas de modification je coche present et le spinbouton
enregistre les données
Tiens au surprise monsieur B est arrivée en retard donc je remonte en
arriere avec le spin pour retrouver Mr B. je vais etre obligé de repassé
par monsieur C mais comme je vais rien cocher(ni present ni absent) il n
y aura pas de nouveau enregistrement de Mr C.
j arrive a Mr B la je coche present et ca va enregistrer les données
quand je clic sur le spin pour retrouver Mr D.

Voila ho lala j espere etre clair je suis desolé ca doit pas être
difficile.







Avatar
DOMINIQUE
j ai fait une correction sur ce code

Sub Coloriagedesdonnées()
Dim test As Boolean, Ctr As Integer

With Sheets("RecuperationDesDonnées")

Ctr = .[A65000].End(xlUp).Row + 1
For Each f In Me.Controls
If TypeOf f Is Frame Then
If f.Name <> "Frame1" Then
For Each Item In f.Controls
If Left(Item.Name, 2) = "Te" Then
i = i + 1
.Cells(Ctr, i) = Item.Value
Var = Noms
If Valeurs(Application.Match(Item.Name, Noms,
0) - 1) _
<> Item.Value Then
test = True
.Cells(Ctr, i).Font.ColorIndex = 3
End If
End If
Next
End If
End If
Next f
'If test = False Then Rows(Ctr).Clear
End With
' End If

et maintenant l'erreur est la : If Valeurs(Application.Match(Item.Name,
Noms, 0) - 1) _
<> Item.Value Then


"DOMINIQUE" a écrit dans le message de groupe de
discussion :
Bonjour Daniel,
Merci beaucoup pour ton travaille, j'essaye de comprendre ton travaille
pour évoluer mais pas facile.
Voici le lien avec quelques modifs :

http://www.cijoint.fr/cjlink.php?file=cj201002/cijPIt6DER.xlsm

j'ai rajouté 2 options bouton (présent absent) qui sont false par défaut
dans l'userform inizialise.
puis pour mieux comprendre j ai enlevé les formules de la feuille
calculateur et mis que des valeurs.
J'ai remarqué avec ton code quand j applique le spin button , les valeurs
de la feuille calculateur disparaissent et il ne faut pas car en cas de
retour en arrière, elle ne serait plus présente. je pense que cette ligne
serai bien la coupable : If test = False Then Rows(Ctr).Clear mais je
n'ose pas toucher à ton code.

ensuite j'ai essayé cette méthode .

Private Sub Spin_Inventaire_Change()

If Op_Absent = False And Op_Present = False Then

Call GestionDeSpinInvententaire

Else
Call ColoriagedesdonnéesSiChangement
Call recuperationDeDonnées

End If

End Sub

et en recuperant ton code qui je pense colorie les données en cas de
changement mais j ai une erreur
sur .Cells(Ctr, i).Font.ColorIndex = 3

Sub ColoriagedesdonnéesSiChangement()
Dim test As Boolean, Ctr As Integer
For Each f In Me.Controls
If TypeOf f Is Frame Then
If f.Name <> "Frame1" Then
For Each Item In f.Controls
If Left(Item.Name, 2) = "Te" Then
i = i + 1
.Cells(Ctr, i) = Item.Value
Var = Noms
If Valeurs(Application.Match(Item.Name, Noms,
0) - 1) _
<> Item.Value Then
test = True
.Cells(Ctr, i).Font.ColorIndex = 3
End If
End If
Next
End If
End If
Next f
If test = False Then Rows(Ctr).Clear
End With
End If

End Sub

Je pense que cette méthode serait idéale car je pourrai rajouter
facilement des données à enregistrer dans la feuil "recuperationDesDonnée"
autres que des texboxs . j aurais juste à logé dans le code
recuperationDeDonnées par exemple les valeurs des cases a cocher.
Dis moi ce que tu en pense!
Merci beaucoup pour tout ce travaille


"Daniel.C" a écrit dans le message de groupe de
discussion :
Bonjour.
J'ai ajouté des lignes dans la macro "Spin_Inventaire_Change" pour
alimenter les textboxes avec leurs noms. Je les enlèverai quand tout sera
opérationnel. Le module d'alimentation est provisoirement commenté.
J'avais un problème avec le premier Spin_Inventaire_Change puisque les
textboxes sont vides. J'ai testé le textbox "Te_AtribN1Biche"; s'il est
vide, je saute la partie test de modifs. Ce n'est peut-être pas
pertinent, si ce textbox n'est pas toujours rempli. Voici le classeur
modifié. Teste-le et une fois que tu l'auras validé, ajoute les
optionbuttons et renvoie le classeur.
http://www.cijoint.fr/cjlink.php?file=cj201002/cijMtie3tP.xlsm
Daniel


Je suis desolé de ne pas etre clair. Pour essaye de me faire comprendre
je vais t expliquer a quoi sert cet userform.

En réunion, cet userform sera projeté sur grand ecran. le spinbuton va
alimenter les données personne par personne.La personne, si elle est
présente, peut modifier les données donc je modifie les données
directement sur l userform. et la je dois sauvegarder ces données pour
les modifier plus tard sur un serveur (si elle sont rouges ca sera super
car je vais modifier plus de 1500 personnes). Quand je vais passer a la
personne suivante en cliquant sur le spinbouton elle enregistrera les
données. le probleme si la personne arrive en retard, par exemple, je
vais revenir en arriere et sans condition l userform va reenregistrer
des données deja presentes. Donc c'est pour ca si je met un option
buton "present et un absent" qui seraient decochés par défaut je pourrai
revenir en arrière sans enregistrer les données.

par exemple 4 personnes presentes (A B C et D) :
monsieur A present , je coche present on modifie 2/3 texbox je clic sur
le spin pour aller au suivant.toutes les données de l userform
s'enregistrent.
Monsieur B absent , je coche absent je passe au suivant.les données ne s
'enregistre pas .
Monsieur C present pas de modification je coche present et le spinbouton
enregistre les données
Tiens au surprise monsieur B est arrivée en retard donc je remonte en
arriere avec le spin pour retrouver Mr B. je vais etre obligé de repassé
par monsieur C mais comme je vais rien cocher(ni present ni absent) il n
y aura pas de nouveau enregistrement de Mr C.
j arrive a Mr B la je coche present et ca va enregistrer les données
quand je clic sur le spin pour retrouver Mr D.

Voila ho lala j espere etre clair je suis desolé ca doit pas être
difficile.









Avatar
Daniel.C
Pourquoi as-tu sorti le coloriage de la macro évènementielle ?
Laisse-le dans la macro "Spin_Inventaire_Change".
Pour l'effacement de la ligne, tu as raison; j'avais testé avec une
seule feuille, donc je n'avais pas vu cette erreur; correction :

If test = False Then .Rows(Ctr).Clear

Daniel

j ai fait une correction sur ce code

Sub Coloriagedesdonnées()
Dim test As Boolean, Ctr As Integer

With Sheets("RecuperationDesDonnées")

Ctr = .[A65000].End(xlUp).Row + 1
For Each f In Me.Controls
If TypeOf f Is Frame Then
If f.Name <> "Frame1" Then
For Each Item In f.Controls
If Left(Item.Name, 2) = "Te" Then
i = i + 1
.Cells(Ctr, i) = Item.Value
Var = Noms
If Valeurs(Application.Match(Item.Name, Noms, 0)
- 1) _
<> Item.Value Then
test = True
.Cells(Ctr, i).Font.ColorIndex = 3
End If
End If
Next
End If
End If
Next f
'If test = False Then Rows(Ctr).Clear
End With
' End If

et maintenant l'erreur est la : If Valeurs(Application.Match(Item.Name,
Noms, 0) - 1) _
<> Item.Value Then


"DOMINIQUE" a écrit dans le message de groupe de
discussion :
Bonjour Daniel,
Merci beaucoup pour ton travaille, j'essaye de comprendre ton travaille
pour évoluer mais pas facile.
Voici le lien avec quelques modifs :

http://www.cijoint.fr/cjlink.php?file=cj201002/cijPIt6DER.xlsm

j'ai rajouté 2 options bouton (présent absent) qui sont false par défaut
dans l'userform inizialise.
puis pour mieux comprendre j ai enlevé les formules de la feuille
calculateur et mis que des valeurs.
J'ai remarqué avec ton code quand j applique le spin button , les valeurs
de la feuille calculateur disparaissent et il ne faut pas car en cas de
retour en arrière, elle ne serait plus présente. je pense que cette ligne
serai bien la coupable : If test = False Then Rows(Ctr).Clear mais je
n'ose pas toucher à ton code.

ensuite j'ai essayé cette méthode .

Private Sub Spin_Inventaire_Change()

If Op_Absent = False And Op_Present = False Then

Call GestionDeSpinInvententaire

Else
Call ColoriagedesdonnéesSiChangement
Call recuperationDeDonnées

End If

End Sub

et en recuperant ton code qui je pense colorie les données en cas de
changement mais j ai une erreur
sur .Cells(Ctr, i).Font.ColorIndex = 3

Sub ColoriagedesdonnéesSiChangement()
Dim test As Boolean, Ctr As Integer
For Each f In Me.Controls
If TypeOf f Is Frame Then
If f.Name <> "Frame1" Then
For Each Item In f.Controls
If Left(Item.Name, 2) = "Te" Then
i = i + 1
.Cells(Ctr, i) = Item.Value
Var = Noms
If Valeurs(Application.Match(Item.Name, Noms, 0)
- 1) _
<> Item.Value Then
test = True
.Cells(Ctr, i).Font.ColorIndex = 3
End If
End If
Next
End If
End If
Next f
If test = False Then Rows(Ctr).Clear
End With
End If

End Sub

Je pense que cette méthode serait idéale car je pourrai rajouter facilement
des données à enregistrer dans la feuil "recuperationDesDonnée"
autres que des texboxs . j aurais juste à logé dans le code
recuperationDeDonnées par exemple les valeurs des cases a cocher.
Dis moi ce que tu en pense!
Merci beaucoup pour tout ce travaille


"Daniel.C" a écrit dans le message de groupe de
discussion :
Bonjour.
J'ai ajouté des lignes dans la macro "Spin_Inventaire_Change" pour
alimenter les textboxes avec leurs noms. Je les enlèverai quand tout sera
opérationnel. Le module d'alimentation est provisoirement commenté.
J'avais un problème avec le premier Spin_Inventaire_Change puisque les
textboxes sont vides. J'ai testé le textbox "Te_AtribN1Biche"; s'il est
vide, je saute la partie test de modifs. Ce n'est peut-être pas pertinent,
si ce textbox n'est pas toujours rempli. Voici le classeur modifié.
Teste-le et une fois que tu l'auras validé, ajoute les optionbuttons et
renvoie le classeur.
http://www.cijoint.fr/cjlink.php?file=cj201002/cijMtie3tP.xlsm
Daniel


Je suis desolé de ne pas etre clair. Pour essaye de me faire comprendre
je vais t expliquer a quoi sert cet userform.

En réunion, cet userform sera projeté sur grand ecran. le spinbuton va
alimenter les données personne par personne.La personne, si elle est
présente, peut modifier les données donc je modifie les données
directement sur l userform. et la je dois sauvegarder ces données pour
les modifier plus tard sur un serveur (si elle sont rouges ca sera super
car je vais modifier plus de 1500 personnes). Quand je vais passer a la
personne suivante en cliquant sur le spinbouton elle enregistrera les
données. le probleme si la personne arrive en retard, par exemple, je
vais revenir en arriere et sans condition l userform va reenregistrer des
données deja presentes. Donc c'est pour ca si je met un option buton
"present et un absent" qui seraient decochés par défaut je pourrai
revenir en arrière sans enregistrer les données.

par exemple 4 personnes presentes (A B C et D) :
monsieur A present , je coche present on modifie 2/3 texbox je clic sur
le spin pour aller au suivant.toutes les données de l userform
s'enregistrent.
Monsieur B absent , je coche absent je passe au suivant.les données ne s
'enregistre pas .
Monsieur C present pas de modification je coche present et le spinbouton
enregistre les données
Tiens au surprise monsieur B est arrivée en retard donc je remonte en
arriere avec le spin pour retrouver Mr B. je vais etre obligé de repassé
par monsieur C mais comme je vais rien cocher(ni present ni absent) il n
y aura pas de nouveau enregistrement de Mr C.
j arrive a Mr B la je coche present et ca va enregistrer les données
quand je clic sur le spin pour retrouver Mr D.

Voila ho lala j espere etre clair je suis desolé ca doit pas être
difficile.











Avatar
Daniel.C
> J'ai remarqué avec ton code quand j applique le spin button , les valeurs de
la feuille calculateur disparaissent et il ne faut pas car en cas de retour
en arrière, elle ne serait plus présente. je pense que cette ligne serai bien
la coupable : If test = False Then Rows(Ctr).Clear mais je n'ose pas toucher
à ton code.


Je vais te faire parvenir la macro commentée.
Est-ce qu'il y a d'autres dysfonctionnement ?
Daniel
Avatar
DOMINIQUE
pour l instant je n envoi pas mais on va surement en trouver d autres lol
merci

"Daniel.C" a écrit dans le message de groupe de
discussion : eu#
J'ai remarqué avec ton code quand j applique le spin button , les valeurs
de la feuille calculateur disparaissent et il ne faut pas car en cas de
retour en arrière, elle ne serait plus présente. je pense que cette ligne
serai bien la coupable : If test = False Then Rows(Ctr).Clear mais je
n'ose pas toucher à ton code.


Je vais te faire parvenir la macro commentée.
Est-ce qu'il y a d'autres dysfonctionnement ?
Daniel




Avatar
Daniel.C
Voici la macro commentée :

Private Sub Spin_Inventaire_Change()

Dim test As Boolean, Ctr As Integer

'Si le textbox Te_AtribN1Biche est vide, on ne racherche pas les
textboxes modifiés
If Me.Te_AtribN1Biche <> "" Then
'Recherche des textboxes modifiés

With Sheets("RecuperationDesDonnées")
'CTr est la première ligne vide sur la feuille
RecuperationDesDonnées
Ctr = .[A65000].End(xlUp).Row + 1

'Boucle dans les frames
For Each f In Me.Controls
If TypeOf f Is Frame Then
If f.Name <> "Frame1" Then
'Boucle sur les contrôles de la frame
For Each Item In f.Controls
'si le contrôle est un textbox
If Left(Item.Name, 2) = "Te" Then
'i représente la colonne dans laquelle la
valeur du textbox est écrite
i = i + 1
.Cells(Ctr, i) = Item.Value
'Noms est la table des noms de textboxes
'Valeurs est la table des valeurs de ces
textboxes avant l'activation du spinbutton
'si la valeur actuelle est différente de la
valeur en mémoire
If Valeurs(Application.Match(Item.Name,
Noms, 0) - 1) _
<> Item.Value Then
test = True
'On colorie la police en rouge
.Cells(Ctr, i).Font.ColorIndex = 3
End If
End If
Next
End If
End If
Next f
'si il n'y a eu aucune valeur modifiée, effacement de la ligne
If test = False Then .Rows(Ctr).Clear
End With
End If

'*********************************************************************************
'Alimentation des commentaires en test
' For Each f In Me.Controls
' If TypeOf f Is Frame Then
' If f.Name <> "Frame1" Then
' For Each Item In f.Controls
' If Left(Item.Name, 2) = "Te" Then Item.Value =
Item.Name
' Next
' End If
' End If
' Next f

'*********************************************************************************

Call GestionDeSpinInvententaire

'Mise en mémoire des valeurs des textboxes
'positionnement de Ctr à -1 (pour obtenir 0) comme première valeur
lorsqu'on fait :
'Ctr = Ctr + 1
Ctr = -1

'Boucle dans les contrôles
For Each f In Me.Controls
'Sélection des frames
If TypeOf f Is Frame Then
If f.Name <> "Frame1" Then
'Boucle dans contrôles de la frame
For Each c In f.Controls
If Left(c.Name, 2) = "Te" Then
'mise en mémoire du nom du textbox dans la table
Noms
'mise en mémoire de la valeur du textbox dans la
table Valeur
Ctr = Ctr + 1
ReDim Preserve Noms(Ctr)
ReDim Preserve Valeurs(Ctr)
Noms(Ctr) = c.Name
Valeurs(Ctr) = c.Text
End If
Next c
End If
End If
Next f

End Sub

Daniel

pour l instant je n envoi pas mais on va surement en trouver d autres lol
merci

"Daniel.C" a écrit dans le message de groupe de
discussion : eu#
J'ai remarqué avec ton code quand j applique le spin button , les valeurs
de la feuille calculateur disparaissent et il ne faut pas car en cas de
retour en arrière, elle ne serait plus présente. je pense que cette ligne
serai bien la coupable : If test = False Then Rows(Ctr).Clear mais je
n'ose pas toucher à ton code.


Je vais te faire parvenir la macro commentée.
Est-ce qu'il y a d'autres dysfonctionnement ?
Daniel






Avatar
DOMINIQUE
Merci beaucoup Daniel j épluche ca comme il faut pour bien comprendre et
merci beaucoup pour l intérêt que tu as porté a mon problème.


"Daniel.C" a écrit dans le message de groupe de
discussion : #
Voici la macro commentée :

Private Sub Spin_Inventaire_Change()

Dim test As Boolean, Ctr As Integer

'Si le textbox Te_AtribN1Biche est vide, on ne racherche pas les
textboxes modifiés
If Me.Te_AtribN1Biche <> "" Then
'Recherche des textboxes modifiés

With Sheets("RecuperationDesDonnées")
'CTr est la première ligne vide sur la feuille
RecuperationDesDonnées
Ctr = .[A65000].End(xlUp).Row + 1

'Boucle dans les frames
For Each f In Me.Controls
If TypeOf f Is Frame Then
If f.Name <> "Frame1" Then
'Boucle sur les contrôles de la frame
For Each Item In f.Controls
'si le contrôle est un textbox
If Left(Item.Name, 2) = "Te" Then
'i représente la colonne dans laquelle la
valeur du textbox est écrite
i = i + 1
.Cells(Ctr, i) = Item.Value
'Noms est la table des noms de textboxes
'Valeurs est la table des valeurs de ces
textboxes avant l'activation du spinbutton
'si la valeur actuelle est différente de la
valeur en mémoire
If Valeurs(Application.Match(Item.Name, Noms,
0) - 1) _
<> Item.Value Then
test = True
'On colorie la police en rouge
.Cells(Ctr, i).Font.ColorIndex = 3
End If
End If
Next
End If
End If
Next f
'si il n'y a eu aucune valeur modifiée, effacement de la ligne
If test = False Then .Rows(Ctr).Clear
End With
End If

'*********************************************************************************
'Alimentation des commentaires en test
' For Each f In Me.Controls
' If TypeOf f Is Frame Then
' If f.Name <> "Frame1" Then
' For Each Item In f.Controls
' If Left(Item.Name, 2) = "Te" Then Item.Value =
Item.Name
' Next
' End If
' End If
' Next f

'*********************************************************************************

Call GestionDeSpinInvententaire

'Mise en mémoire des valeurs des textboxes
'positionnement de Ctr à -1 (pour obtenir 0) comme première valeur
lorsqu'on fait :
'Ctr = Ctr + 1
Ctr = -1

'Boucle dans les contrôles
For Each f In Me.Controls
'Sélection des frames
If TypeOf f Is Frame Then
If f.Name <> "Frame1" Then
'Boucle dans contrôles de la frame
For Each c In f.Controls
If Left(c.Name, 2) = "Te" Then
'mise en mémoire du nom du textbox dans la table Noms
'mise en mémoire de la valeur du textbox dans la table
Valeur
Ctr = Ctr + 1
ReDim Preserve Noms(Ctr)
ReDim Preserve Valeurs(Ctr)
Noms(Ctr) = c.Name
Valeurs(Ctr) = c.Text
End If
Next c
End If
End If
Next f

End Sub

Daniel

pour l instant je n envoi pas mais on va surement en trouver d autres
lol
merci

"Daniel.C" a écrit dans le message de groupe
de discussion : eu#
J'ai remarqué avec ton code quand j applique le spin button , les
valeurs de la feuille calculateur disparaissent et il ne faut pas car
en cas de retour en arrière, elle ne serait plus présente. je pense que
cette ligne serai bien la coupable : If test = False Then
Rows(Ctr).Clear mais je n'ose pas toucher à ton code.


Je vais te faire parvenir la macro commentée.
Est-ce qu'il y a d'autres dysfonctionnement ?
Daniel










1 2 3