Problème de transfert de données d'un userform vers une feuille de calcul

Signaler
Messages postés
23
Date d'inscription
vendredi 1 juillet 2011
Statut
Membre
Dernière intervention
3 août 2011
-
Messages postés
23
Date d'inscription
vendredi 1 juillet 2011
Statut
Membre
Dernière intervention
3 août 2011
-
Bonjour,
apprenti ingenieur en collectivité territoriale, je débute en VB.

j'ai créer un programme de saisie de programmation des routes 2012 en eure-et-loir (28) et j'ai un souci pour finaliser ce dernier car la dernière saisie écrase la précedente au lieu de passer a la prochaine ligne vide.

Voici mon code :

Private Sub CommandButton2_Click()


' Si l'userform vient d'être ouvert la ligne ci-après considère que la commande
' Validation a été cliqué par erreur If Left(ComboBox22, 8) = "Veuillez" Then Exit Sub
On Error Resume Next
' La ligne ci-dessous évite de répéter Worksheets("fichier")
With Worksheets("Programme")
' mise en forme des cellules car j'ai remarqué que si cette feuille' fin de la mise en forme et on ferme la foncion de départ With Worksheets("fichier")
End With

' Et on revient sur la page d'accueilSheets("fichier").Select
MsgBox "Transfert terminé...Réinitialisation..."
' les textbox sont réinitialisées
Dim ctl As Control

For Each ctl In UF2.Controls
Select Case TypeName(ctl)
Case "Textbox", "Combobox":
ctl.Value = ""
End Select

Next ctl

If UserForm1.OptionButton1.Value = True Then

Range("C17").End(xlDown).Select
ActiveCell.Offset(1, 0).Activate

Range("Programme!C17" & i).Value = RD.Value
Range("Programme!E17" & i).Value = PR1.Value
Range("Programme!F17" & i).Value = PR2.Value
Range("Programme!G17" & i).Value = PR3.Value
Range("Programme!J17" & i).Value = Nature_du_revêtement_en_place.Value
Range("Programme!K17" & i).Value = Année_de_sa_mise_en_oeuvre.Value
Range("Programme!L17" & i).Value = Tous_véh.Value
Range("Programme!I17" & i).Value = commune.Value
Range("Programme!N17" & i).Value = Longueur.Value
Range("Programme!H17" & i).Value = PR4.Value
Range("Programme!M17" & i).Value = PL.Value
Range("Programme!D17" & i).Value = Catégorie_RD.Value
Range("Programme!O17" & i).Value = Largeur_chaussée.Value
Range("Programme!P17" & i).Value = Surface.Value
Range("Programme!R17" & i).Value = Montant_marquage.Value
Range("Programme!S17" & i).Value = montant_tvx_prépa.Value
Range("Programme!T17" & i).Value = Montant_tvx.Value
Range("Programme!V17" & i).Value = Assise.Value
Range("Programme!W17" & i).Value = Couche_de_roulement.Value
Range("Programme!Q17" & i).Value = Tonnage_total.Value
Range("Programme!C1").Value = subdivision.Value
Range("Programme!D4").Value = canton.Value


End If


If UserForm1.OptionButton2.Value = True Then

Range("C30").End(xlDown).Select
Range("C30").End(xlDown).Offset(1, 0).Select

Range("Programme!C30" & i).Value = RD.Value
Range("Programme!E30" & i).Value = PR1.Value
Range("Programme!F30" & i).Value = PR2.Value
Range("Programme!G30" & i).Value = PR3.Value
Range("Programme!J30" & i).Value = Nature_du_revêtement_en_place.Value
Range("Programme!K30" & i).Value = Année_de_sa_mise_en_oeuvre.Value
Range("Programme!L30" & i).Value = Tous_véh.Value
Range("Programme!I30" & i).Value = commune.Value
Range("Programme!N30" & i).Value = Longueur.Value
Range("Programme!H30" & i).Value = PR4.Value
Range("Programme!M30" & i).Value = PL.Value
Range("Programme!D30" & i).Value = Catégorie_RD.Value
Range("Programme!O30" & i).Value = Largeur_chaussée.Value
Range("Programme!P30" & i).Value = Surface.Value
Range("Programme!R30" & i).Value = Montant_marquage.Value
Range("Programme!S30" & i).Value = montant_tvx_prépa.Value
Range("Programme!T30" & i).Value = Montant_tvx.Value
Range("Programme!V30" & i).Value = Assise.Value
Range("Programme!W30" & i).Value = Couche_de_roulement.Value
Range("Programme!Q30" & i).Value = Tonnage_total.Value
Range("Programme!C1").Value = subdivision.Value
Range("Programme!D4").Value = canton.Value


End If

If UserForm1.OptionButton3.Value = True Then

Range("C22").End(xlDown).Select
Range("C22").End(xlDown).Offset(1, 0).Select

Range("Programme!C22" & i).Value = RD.Value
Range("Programme!E22" & i).Value = PR1.Value
Range("Programme!F22" & i).Value = PR2.Value
Range("Programme!G22" & i).Value = PR3.Value
Range("Programme!J22" & i).Value = Nature_du_revêtement_en_place.Value
Range("Programme!K22" & i).Value = Année_de_sa_mise_en_oeuvre.Value
Range("Programme!L22" & i).Value = Tous_véh.Value
Range("Programme!I22" & i).Value = commune.Value
Range("Programme!N22" & i).Value = Longueur.Value
Range("Programme!H22" & i).Value = PR4.Value
Range("Programme!M22" & i).Value = PL.Value
Range("Programme!D22" & i).Value = Catégorie_RD.Value
Range("Programme!O22" & i).Value = Largeur_chaussée.Value
Range("Programme!P22" & i).Value = Surface.Value
Range("Programme!R22" & i).Value = Montant_marquage.Value
Range("Programme!S22" & i).Value = montant_tvx_prépa.Value
Range("Programme!T22" & i).Value = Montant_tvx.Value
Range("Programme!V22" & i).Value = Assise.Value
Range("Programme!W22" & i).Value = Couche_de_roulement.Value
Range("Programme!Q22" & i).Value = Tonnage_total.Value
Range("Programme!C1").Value = subdivision.Value
Range("Programme!D4").Value = canton.Value
End If

If UserForm1.OptionButton4.Value = True Then

Range("C57").End(xlDown).Select
Range("C57").End(xlDown).Offset(1, 0).Select

Range("Programme!C57" & i).Value = RD.Value
Range("Programme!E57" & i).Value = PR1.Value
Range("Programme!F57" & i).Value = PR2.Value
Range("Programme!G57" & i).Value = PR3.Value
Range("Programme!J57" & i).Value = Nature_du_revêtement_en_place.Value
Range("Programme!K57" & i).Value = Année_de_sa_mise_en_oeuvre.Value
Range("Programme!L57" & i).Value = Tous_véh.Value
Range("Programme!I57" & i).Value = commune.Value
Range("Programme!N57" & i).Value = Longueur.Value
Range("Programme!H57" & i).Value = PR4.Value
Range("Programme!M57" & i).Value = PL.Value
Range("Programme!D57" & i).Value = Catégorie_RD.Value
Range("Programme!O57" & i).Value = Largeur_chaussée.Value
Range("Programme!P57" & i).Value = Surface.Value
Range("Programme!R57" & i).Value = Montant_marquage.Value
Range("Programme!S57" & i).Value = montant_tvx_prépa.Value
Range("Programme!T57" & i).Value = Montant_tvx.Value
Range("Programme!V57" & i).Value = Assise.Value
Range("Programme!W57" & i).Value = Couche_de_roulement.Value
Range("Programme!Q57" & i).Value = Tonnage_total.Value
Range("Programme!C1").Value = subdivision.Value
Range("Programme!D4").Value = canton.Value
End If

If UserForm1.OptionButton5.Value = True Then
Range("C41").End(xlDown).Select
i = Cells(ActiveSheet.Cells(17, 3).End(xlDown).Row + 1, 3).Select



Range("Programme!C41" & i).Value = RD.Value
Range("Programme!E41" & i).Value = PR1.Value
Range("Programme!F41" & i).Value = PR2.Value
Range("Programme!G41" & i).Value = PR3.Value
Range("Programme!J41" & i).Value = Nature_du_revêtement_en_place.Value
Range("Programme!K41" & i).Value = Année_de_sa_mise_en_oeuvre.Value
Range("Programme!L41" & i).Value = Tous_véh.Value
Range("Programme!I41" & i).Value = commune.Value
Range("Programme!N41" & i).Value = Longueur.Value
Range("Programme!H41" & i).Value = PR4.Value
Range("Programme!M41" & i).Value = PL.Value
Range("Programme!D41" & i).Value = Catégorie_RD.Value
Range("Programme!O41" & i).Value = Largeur_chaussée.Value
Range("Programme!P41" & i).Value = Surface.Value
Range("Programme!V41" & i).Value = Assise.Value
Range("Programme!W41" & i).Value = Couche_de_roulement.Value
Range("Programme!Q41" & i).Value = Tonnage_total.Value
Range("Programme!C1").Value = subdivision.Value
Range("Programme!D4").Value = canton.Value
End If

If UserForm1.OptionButton6.Value = True Then
Range("C47").End(xlDown).Select
Range("C47").End(xlDown).Offset(1, 0).Select

Range("Programme!C47" & i).Value = RD.Value
Range("Programme!E47" & i).Value = PR1.Value
Range("Programme!F47" & i).Value = PR2.Value
Range("Programme!G47" & i).Value = PR3.Value
Range("Programme!J47" & i).Value = Nature_du_revêtement_en_place.Value
Range("Programme!K47" & i).Value = Année_de_sa_mise_en_oeuvre.Value
Range("Programme!L47" & i).Value = Tous_véh.Value
Range("Programme!I47" & i).Value = commune.Value
Range("Programme!N47" & i).Value = Longueur.Value
Range("Programme!H47" & i).Value = PR4.Value
Range("Programme!M47" & i).Value = PL.Value
Range("Programme!D47" & i).Value = Catégorie_RD.Value
Range("Programme!O47" & i).Value = Largeur_chaussée.Value
Range("Programme!P47" & i).Value = Surface.Value
Range("Programme!V47" & i).Value = Assise.Value
Range("Programme!W47" & i).Value = Couche_de_roulement.Value
Range("Programme!Q47" & i).Value = Tonnage_total.Value
Range("Programme!C1").Value = subdivision.Value
Range("Programme!D4").Value = canton.Value
End If
If UserForm1.OptionButton7.Value = True Then
Range("C67").End(xlDown).Select
Range("C67").End(xlDown).Offset(1, 0).Select

Range("Programme!C67" & i).Value = RD.Value
Range("Programme!E67" & i).Value = PR1.Value
Range("Programme!F67" & i).Value = PR2.Value
Range("Programme!G67" & i).Value = PR3.Value
Range("Programme!J67" & i).Value = Nature_du_revêtement_en_place.Value
Range("Programme!K67" & i).Value = Année_de_sa_mise_en_oeuvre.Value
Range("Programme!L67" & i).Value = Tous_véh.Value
Range("Programme!I67" & i).Value = commune.Value
Range("Programme!N67" & i).Value = Longueur.Value
Range("Programme!H67" & i).Value = PR4.Value
Range("Programme!M67" & i).Value = PL.Value
Range("Programme!D67" & i).Value = Catégorie_RD.Value
Range("Programme!O67" & i).Value = Largeur_chaussée.Value
Range("Programme!P67" & i).Value = Surface.Value
Range("Programme!R67" & i).Value = Montant_marquage.Value
Range("Programme!S67" & i).Value = montant_tvx_prépa.Value
Range("Programme!T67" & i).Value = Montant_tvx.Value
Range("Programme!V67" & i).Value = Assise.Value
Range("Programme!W67" & i).Value = Couche_de_roulement.Value
Range("Programme!Q67" & i).Value = Tonnage_total.Value
Range("Programme!C1").Value = subdivision.Value
Range("Programme!D4").Value = canton.Value
End IfUnload Me
End Sub

Merci d'avance de bien vouloir m'aider

Informatisez pour être moderne et suivre les futurs générations humaines !!!

2 réponses

Messages postés
31509
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 février 2021
344
Bonjour,

ta ligne
i =  Cells(ActiveSheet.Cells(17, 3).End(xlDown).Row + 1, 3).Select


me parait étrange.. elle retourne "VRAI".

Tu veux obtenir quoi avec cette variable ? la derniere ligne ?
Derniere_Ligne = Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row


Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
PS:Merci d'utiliser les [color =red]balises de Cod
Messages postés
23
Date d'inscription
vendredi 1 juillet 2011
Statut
Membre
Dernière intervention
3 août 2011

Voici le code modifié et plus rien ne se transfert

Private Sub CommandButton2_Click()


' Si l'userform vient d'être ouvert la ligne ci-après considère que la commande
' Validation a été cliqué par erreur If Left(ComboBox22, 8) = "Veuillez" Then Exit Sub
On Error Resume Next
' La ligne ci-dessous évite de répéter Worksheets("fichier")
With Worksheets("Programme")
' mise en forme des cellules car j'ai remarqué que si cette feuille
' fin de la mise en forme et on ferme la foncion de départ With Worksheets("fichier")End With' Et on revient sur la page d'accueilSheets("fichier").Select
MsgBox "Transfert terminé...Réinitialisation..."
' les textbox sont réinitialisées
Dim ctl As Control

For Each ctl In UF2.Controls
Select Case TypeName(ctl)
Case "Textbox", "Combobox":
ctl.Value = ""
End Select

Next ctl
i = Cells.Find("*", Range("C1"), , , xlByRows, xlPrevious)

If UserForm1.OptionButton1.Value = True ThenRange("C17").End(xlDown).Select
ActiveCell.Offset(1, 0).Activate

Range("Programme!C17" & i).Value = RD.Value
Range("Programme!E17" & i).Value = PR1.Value
Range("Programme!F17" & i).Value = PR2.Value
Range("Programme!G17" & i).Value = PR3.Value
Range("Programme!J17" & i).Value = Nature_du_revêtement_en_place.Value
Range("Programme!K17" & i).Value = Année_de_sa_mise_en_oeuvre.Value
Range("Programme!L17" & i).Value = Tous_véh.Value
Range("Programme!I17" & i).Value = commune.Value
Range("Programme!N17" & i).Value = Longueur.Value
Range("Programme!H17" & i).Value = PR4.Value
Range("Programme!M17" & i).Value = PL.Value
Range("Programme!D17" & i).Value = Catégorie_rd.Value
Range("Programme!O17" & i).Value = Largeur_chaussée.Value
Range("Programme!P17" & i).Value = Surface.Value
Range("Programme!R17" & i).Value = Montant_marquage.Value
Range("Programme!S17" & i).Value = montant_tvx_prépa.Value
Range("Programme!T17" & i).Value = Montant_tvx.Value
Range("Programme!V17" & i).Value = Assise.Value
Range("Programme!W17" & i).Value = Couche_de_roulement.Value
Range("Programme!Q17" & i).Value = Tonnage_total.Value
Range("Programme!C1").Value = subdivision.Value
Range("Programme!D4").Value = canton.Value


End If

Informatisez pour être moderne et suivre les futurs générations humaines !!!