Appliquer les changements uniquement sur la ligne concerné

Hpotter

XLDnaute Junior
Bonjour à tous,

J'ai fait ce code qui me permet (normalement) de faire des modifications dans 3 TextBoxs d'un formulaire et uniquement si ils sont vides.
Si aucne modification n'a été apportée alors qu'il y a des TextBoxs vides alors un message d'erreur s'affiche.

Cependant, il ne fait pas les modifications que je souhaite. Par exemple, je clique dans la Combo du formulaire et choisi un numéro qui correspond à un numéro de candidiat. A aprtir de là, des données sont affichées dans différents TextBoxs (Nom, adresse, etc.) Les TextBoxs T8, T9 et T10 servent à noter les candidats selon 3 tours de scrutins. Il se peut qu'un 1er tour soit déjà fait alors lors de l'affichage T8 n'est plus accessible à la modification.
Il ne reste plus que T9 et T10. Si rien n'est saisi alors message.

Mais imaginons que la ligne 4 soit entièrement saisie, donc avec les 3 notes et que je fais appel à ce candidat par mon formulaire et qu'il manque des notes dans la ligne 5 alors les notes de ligne 4 remplacent celles de la ligne 4 lors de ma validation.

Il faut donc que si T8, T9 et T10 sont remplies rien ne se passe lors de la validation mais si il y manque une note et qu'elle est saisie alors au moment de la validation celle-ci aille bien sur la ligne du candidat sélectionné dans la Combo.

Voici le code :

Code:
Private Sub C1_Click()
Dim erreur(3) As Boolean, msg As String, I As Byte
Dim Tablo As Variant

'ver=0
Tablo = Array("", "Note peau", "Note 1er tour", "Note 2ème tour")
erreur(1) = Me.T8 = ""
erreur(2) = Me.T9 = ""
erreur(3) = Me.T10 = ""
For I = 1 To 3
    If erreur(I) Then msg = msg & vbCrLf & "-" & " " & Tablo(I)
    Next
    If msg <> "" Then
    MsgBox "Vous n'avez saisi aucune note ?" & msg, 0, "A vérifier"
    Exit Sub
End If
Dim lngRow As Long
With Sheets("Général") 'la feuille "Général" est activée
  If .Range("I4") = "" Then 'la cellule I4 est prise comme point de départ
      lngRow = 4 ' si elle est vide, elle est sélectionnée
  Else
      lngRow = .Range("I3").End(xlDown).Row + 1
  End If
  .Cells(lngRow, 9).Value = Me.T9.Value 'La valeur de T9 doit aller dans la cellule I8
  .Cells(lngRow, 10).Value = (Me.T10) 'La valeur de T10 dans la cellule J8
  .Cells(lngRow, 12).Value = (Me.T8) 'La valeur de T8 dans la cellule L8
End With

'Après validation les données présentes sont effacées du formulaire
'La Combo (CbNum) prend le focus
CbNum.Value = ""
T1 = ""
T2 = ""
T3 = ""
T4 = ""
T5 = ""
T6 = ""
T7 = ""
T8 = ""
T9 = ""
T10 = ""
CbNum.SetFocus
End Sub

Merci à tous pour l'aide que vous pourrez m'apporter
 

tototiti2008

XLDnaute Barbatruc
Re : Appliquer les changements uniquement sur la ligne concerné

Bonjour Harry,

Bienvenue sur XLD,

Mais imaginons que la ligne 4 soit entièrement saisie, donc avec les 3 notes et que je fais appel à ce candidat par mon formulaire et qu'il manque des notes dans la ligne 5 alors les notes de ligne 4 remplacent celles de la ligne 4 lors de ma validation.

Désolé mais mes pouvoirs magiques sont un peu en panne (surtout du côté divination ;))

Trés dur de comprendre sans un bout de fichier exemple, sans données confidentielles et < 48 Ko
 

Hpotter

XLDnaute Junior
Re : Appliquer les changements uniquement sur la ligne concerné

Bonjour tototiti2008,

Je vais essayé d'être plus car mon fichier fait plus de 600Ko et je ne peux pas dissocier mon formulaire.

Donc, un tableau dans la feuille "Général". Dans la colonne A et à partir de la ligne 4 des numéros de candidats sont inscrits.

Dans la colonnes B les noms, dans C les Prénoms, etc...

Dans les colonnes I, J et L il y a des notes saisies à l'aide d'un formulaire (UForm1).

Dans ce même formulaire j'ai donc 1 Combo (CbNum) dans laquelle je choisi un numéro de candidat. Dans les textBoxs T8, T9 et T10 je saisi une note. Lorsque je valide la saisie à l'aide du bouton C1 du formulaire, alors les données saisies doivent impérativement être reportées sur la même ligne que le numéro choisi dans la Combo et pas une autre.

Si rien n'est saisi alors message d'erreur. Si toutes les données ont déjà été saisies alors rien ne se passe aucun changement apporté au tableau de la feuille "Général".

Merci par avance
 

tototiti2008

XLDnaute Barbatruc
Re : Appliquer les changements uniquement sur la ligne concerné

Re,

Il me semble que tu n'écris pas dans la ligne comportant le numéro de candidat mais dans la 1ère ligne vide :

Code:
lngRow = .Range("I3").End(xlDown).Row + 1

peut-être :

Code:
lngRow = application.match(Cbnum.text,.Range("A1:A65536"),0)
 

Discussions similaires

Réponses
7
Affichages
1 K

Statistiques des forums

Discussions
312 677
Messages
2 090 842
Membres
104 677
dernier inscrit
soufiane12