Incrémentation auto aprés recherche

  • Initiateur de la discussion G'Claire
  • Date de début
G

G'Claire

Guest
Salut le forum,

Pour valider un nouveau contrat et lui incrémenter un Numero (En colonne A et ligne a partir de 8) j'utilise ce code

Dim L As Integer 'Déclaration de variable "L" pour connaitre la Ligne Numéro

'ici je repère la dernière ligne vide pour la Collections des données
L = Sheets("Renseignements").Range("A65536").End(xlUp).Row + 1
txtN°Contrat = Year(Date) & "-" & Format(L - 7, ["0#"])


Plus le reste des données.

Mais il y a possibilite que le contrat soit pas signé tout de suite donc dans cette colonne j'inscrirai au moment de la validation, "Non-Signé"

Ensuite lors de la signature je fait une recherche et le résultat de cette recherche me donne des données dont le TextBox avec ecrit "Non-Signé"

Que je récupère comme suit à l'inisialisation de l'UserForm:


résultat.txtN°Contrat.Value = ActiveCell.Value

Donc si a ce jour le contrat est signé, je clique sur un bouton "Signature du contrat" cela m'imprime le formulaire rempli et j'aimerai que cela me remplace "Non-Signé" par le N° de contrat sous le même format et en tenant compte des N° déja entrés sachant qu'a la suite dans la ligne des données sont déja présente et qu'en dessous il y a des lignes déja remplient.

J'espère être assez claire, et vous remercie par avance, G'Claire
 
G

G'Claire

Guest
Robert, le forum

Je viens d'essayer d'apter ton fichier, mais j'ai a vrai dire du mal car en faite la recherche est deja faite au moment de l'incrémentation j'explique :

J'ai un UserForm de recherche dans lequel je tape un nom de client

Je double click dessus et cela m'ouvre un autre UserForm avec le résultat de la recherche :

Nom, Prenom, coordonnées etc, et dont un TextBox1 avec le n° de contrat.

Si celui-ci n'est pas signé cela est écrit Non-Signé dans le textox1
Si signé la date et un Numéro dans le textox1

Dans le cas ou je signe le contrat a ce moment je clique sur un bouton et cela devrait donnée le résultat que tu m'as fait dans ton fichier, mais je ne fait pas une recherche de contrat non-signe (En faite cette recherche je l'ai deja, mais juste pour une visue, pas pour modifier quoi que ce soit)

Donc j'ai bien essayer de reprendre ton code pour le modifier a ma convenance, mais j'ai des message d'erreurs (Déclaration de variable, objet non définie etc...)

Je te remercie, G'Claire
 
R

Robert

Guest
Bonjour G'Claire, bonjour le forum,

pourrais-tu me faire une copie de ton fichier en supprimant tout ce qui n'a pas de rapport avec cette affaire, quelques lignes d'exemple et tes UserForms. Je pense que je devrais arriver à adapter le code.

À plus,

Robert
 
G

G'Claire

Guest
Robert, le forum

Je viens de faire l'essaie et me suis apercu que je vais avoit un ti souci.

Lors de la rencontre avec mes futurs clients.

Je rentre divers renseignement: (Nom, Prenom etc...)

Une fois cela saisie, a la validation, une MsgBox me demande si je veux signé ou non

Si oui cela me met un numero de contrat mais le code utilise passe par rapport au numero de la dernière ligne, alors qu'il serait je pense préférable de faire un test du dernier numero de contrat.

Voici le code que j'utilise :

Private Sub BoutNouvelle_Click()

Dim CTRL As Control
Dim réponse
Dim L As Integer 'Déclaration de variable "L" pour connaitre la Ligne Numéro

'ici je repère la dernière ligne vide pour la Collections des données
L = Sheets("Renseignements").Range("A65536").End(xlUp).Row + 1

'Ici c'est le report de la saisie dans la feuille

With Sheets("Renseignements")

.Range("B" & L).Value = txtNomDuMarie.Value
.Range("C" & L).Value = txtPrenomDuMarie.Value
.Range("D" & L).Value = "' " & txtPortableDuMarie.Value
.Range("E" & L).Value = txtNomDeLaMariee.Value
.Range("F" & L).Value = txtPrenomDeLaMariee.Value
.Range("G" & L).Value = "'" & txtPortableDeLaMariee.Value
.Range("H" & L).Value = "'" & txtNumDeBatiment.Value
.Range("I" & L).Value = txtBatiment.Value
.Range("J" & L).Value = "'" & txtNumeroDeRue.Value
.Range("K" & L).Value = txtNomDeRue.Value
.Range("L" & L).Value = "'" & cbxVilleOrganisateurs.Value
.Range("M" & L).Value = txtCodePostaleOrganisateurs.Value
.Range("N" & L).Value = "'" & txtTelephoneDomicileOrganisateurs.Value
.Range("O" & L).Value = "'" & cbxPrixFrancs.Value
.Range("P" & L).Value = "'" & cbxAccompteFrancs.Value
.Range("Q" & L).Value = "'" & txtSoldeFrancs.Value
.Range("R" & L).Value = "'" & txtPrixEuros.Value
.Range("S" & L).Value = "'" & txtAccompteEuros.Value
.Range("T" & L).Value = "'" & txtSoldeEuros.Value
.Range("U" & L).Value = cbxTypeDeSoiree.Value
.Range("V" & L).Value = txtDateDeLaPrestation.Value
.Range("W" & L).Value = "'" & cbxHeureArrivee.Value
.Range("X" & L).Value = "'" & cbxHeureFin.Value
.Range("Y" & L).Value = "'" & txtNbPersRepas.Value
.Range("Z" & L).Value = "'" & txtNbPersDessert.Value
.Range("AA" & L).Value = "'" & cbxNomDeSalle.Value
.Range("AB" & L).Value = txtTelSalle.Value
.Range("AC" & L).Value = txtLieuSalle.Value
.Range("AD" & L).Value = "'" & txtCodePostalLieuSalle.Value
.Range("AE" & L).Value = "'" & cbxTraiteur.Value
.Range("AF" & L).Value = "'" & txtTelTraiteur.Value
.Range("AG" & L).Value = txtVilleActiviteTraiteur.Value
.Range("AH" & L).Value = "'" & txtCodePostalTraiteur.Value
.Range("AI" & L).Value = LTrim(txtNomDuMarie.Value) & " " & txtPrenomDuMarie.Value & " et " & txtNomDeLaMariee.Value & " " & txtPrenomDeLaMariee.Value
.Range("AK" & L).Value = txtMailDuMarie.Value
.Range("AL" & L).Value = txtMailDeLaMariee.Value

réponse = MsgBox("Voulez-vous établir le contrat maintenant ? ", vbYesNo + vbQuestion, "VALIDATION")

If réponse = vbYes Then

lblNDeContrat = Year(Date) & "-" & Format(L - 7, ["0#"])

.Range("A" & L).Value = "'" & lblNDeContrat
.Range("AJ" & L).Value = Application.Proper(Format(Now, "dddd dd mmmm yyyy "))

Call MiseEnFormeDossier(Range([A65536].End(xlUp)(1), [AJ65536].End(xlUp)(1)))

EnvoieContrat_recto

If Range("A9") = "" Then
Call MiseEnFormeEntètes
End If

Else

lblNDeContrat = "Non signé"

.Range("A" & L).Value = "'" & lblNDeContrat
.Range("AJ" & L).Value = "Contrat non signé" 'Peut etre supprimé

Call MiseEnFormeDossier(Range([A65536].End(xlUp)(1), [AJ65536].End(xlUp)(1)))

If Range("A9") = "" Then
Call MiseEnFormeEntètes
End If

End If
End With

End Sub

Et donc pour la suite (Question que j'ai poser sur le forum), même problème, car de la manière faite cela prend en compte la dernière ligne du tableau, alors qu'il faudrait que je prenne en compte, le dernier N° de contrat saisie et remplacer dans la feuille "Non-Signé" par le nouveau N° du contrat

Grace a ta suggestion, je me suis rendu compte que ma manière de faire au debut n'ete pas la meilleur en vue de la nouvelle option .

Je te remercie,G'Claire
 

Discussions similaires

Réponses
4
Affichages
235
Réponses
30
Affichages
1 K

Statistiques des forums

Discussions
312 559
Messages
2 089 639
Membres
104 235
dernier inscrit
Floflodu37