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

Problème l'envoie de mes données sur ma feuille

3 réponses
Avatar
Ouille
Salut a toutes et tous,

J'ai un UserForm qui me sert a rentrer des données et a les envoyer dans une feuille :

Ces données sont rentrées a partire de la ligne 8 (en lignes 7 j'ai mes entètes de lignes) de la Colonne "A" a la Colonne "T"

Mon souci au moment de la validation c'est que celles-ci se rentre sur la ligne des entètes : Voici le code du Bouton "Valider"

Private Sub BoutNouvelle_Click()

If ComboBoxClients = "" Then
MsgBox "QUI EST LE DONNEUR D'ORDRE DE CE PRODUIT ?", vbCritical, "ATTENTION"
ComboBoxClients.SetFocus
Exit Sub
End If

If TextBoxReferenceProduit = "" Then
MsgBox "VOUS N'AVEZ PAS SAISIE DE REFERENCE PRODUIT !", vbCritical, "ATTENTION"
TextBoxReferenceProduit.SetFocus
Exit Sub
End If

If TextBoxDesignationProduit = "" Then
MsgBox "VOTRE REFERENCE N'A PAS DE DESIGNATION !", vbCritical, "ATTENTION"
TextBoxDesignationProduit.SetFocus
Exit Sub
End If

If TextBoxCasier = "" Then
MsgBox "VOUS NE COMPTEZ PAS LE RANGER VOTRE DOSSIER !", vbCritical, "ATTENTION"
TextBoxCasier.SetFocus
Exit Sub
End If

If ComboBoxMatricule = "" Then
MsgBox "PERSONNE N'ENTRE CES DONNEES !", vbCritical, "ATTENTION"
ComboBoxMatricule.SetFocus
Exit Sub
End If

Cible = Application.WorksheetFunction.Substitute(TextBoxCableurs, vbCrLf, Chr(10) & vbTab)

If TextBoxSup > "" Then Sup = vbCrLf & "Sup : " & TextBoxSup.Value
If TextBoxIndice > "" Then Indice = vbCrLf & "Indice : " & TextBoxIndice.Value
If TextBoxVersion > "" Then Version = vbCrLf & "Version : " & TextBoxVersion.Value

Msg7 = MsgBox("Vous allez créer une fiche avec les données suivantes :" _
& vbCrLf & vbCrLf & "Société donneuse d'ordre : " & TextBoxSociete.Value _
& vbCrLf & "Interlocuteur : " & ComboBoxClients.Value _
& vbCrLf & vbCrLf & "Désignation produit : " & TextBoxDesignationProduit.Value _
& vbCrLf & "Référence : " & TextBoxReferenceProduit.Value _
& Version _
& Indice _
& Sup _
& vbCrLf & vbCrLf & "Cableurs suceptible de faire le produit : " _
& vbCrLf & vbCrLf & vbTab & Cible & vbCrLf & vbCrLf & " Voulez-vous continuer ?", vbYesNo + vbQuestion, "Confirmation")

If Msg7 = vbNo Then Exit Sub
If Msg7 = vbYes Then

'créer

With ActiveCell 'Dans la feuille Tool_Données

Range("A65500", Range("A7").End(xlDown)).Offset(1, 0).Select
..Value = "'" & LTrim(UserForm2.TextBoxReferenceProduit.Value) + UserForm2.TextBoxVersion.Value + UserForm2.TextBoxIndice.Value + UserForm2.TextBoxSup.Value 'Gestion du zéro
..Offset(0, 1).Value = "'" & UserForm2.TextBoxReferenceProduit.Value 'Gestion du zéro
..Offset(0, 2).Value = UserForm2.TextBoxVersion.Value
..Offset(0, 3).Value = UserForm2.TextBoxIndice.Value
..Offset(0, 4).Value = UserForm2.TextBoxSup.Value
..Offset(0, 5).Value = UserForm2.TextBoxDesignationProduit.Value
..Offset(0, 6).Value = UserForm2.TextBoxCasier.Value
..Offset(0, 7).Value = "'" & UserForm2.TextBoxDateEnregistrement.Value 'Gestion du zéro
..Offset(0, 8).Value = UserForm2.TextBoxPrenomNomOperateur.Value
..Offset(0, 9).Value = "'" & UserForm2.ComboBoxMatricule.Value 'Gestion du zéro
..Offset(0, 10).Value = UserForm2.TextBoxCableurs.Value
..Offset(0, 11).Value = UserForm2.ComboBoxClients.Value
..Offset(0, 12).Value = UserForm2.TextBoxSociete.Value
..Offset(0, 13).Value = UserForm2.TextBoxTelClients.Value
..Offset(0, 14).Value = UserForm2.TextBoxE_Mail.Value

End With

'ActiveWorkbook.Save

'MsgBox " La fiche est créée et l'impression est en court"

'comptage nb de fiches

Call calculnombrefiches

With Sheets("Tool_Entete") 'Créer dans la feuille Tool_Entète

.LabelNumeroDeCasier = UserForm2.TextBoxCasier
.LabelReference = UserForm2.TextBoxReferenceProduit
.LabelVersion = UserForm2.TextBoxVersion
.LabelIndice = UserForm2.TextBoxIndice
.LabelDesignation = UserForm2.TextBoxDesignationProduit
.LabelClient = UserForm2.TextBoxSociete
.LabelIntervenant = UserForm2.ComboBoxClients
.LabelCableurs = UserForm2.TextBoxCableurs
.LabelDate = UserForm2.TextBoxDateEnregistrement
.LabelOperateur = UserForm2.TextBoxPrenomNomOperateur
.LabelSup = résultat.TextBoxSup

End With

Msg5 = MsgBox(" Voulez-vous ranger ce dossier ? ", vbYesNo + vbQuestion, "Confirmation")
If Msg5 = vbYes Then

With ActiveCell

Range("A65500", Range("A7").End(xlDown)).Offset(1, 0).Select
.Offset(0, 14).Value = "Rangé"
.Offset(0, 16).Value = "'" & UserForm2.TextBoxDateEnregistrement.Value
.Offset(0, 17).Value = "'" & Format(Now, "Long Time")
.Offset(0, 18).Value = UserForm2.TextBoxPrenomNomOperateur.Value
.Offset(0, 19).Value = "'" & UserForm2.ComboBoxMatricule.Value

End With

Else

With ActiveCell

Range("A65500", Range("A7").End(xlDown)).Offset(1, 0).Select
.Offset(0, 15).Value = "Sorti"
.Offset(0, 16).Value = "'" & UserForm2.TextBoxDateEnregistrement.Value
.Offset(0, 17).Value = "'" & Format(Now, "Long Time")
.Offset(0, 18).Value = UserForm2.TextBoxPrenomNomOperateur.Value
.Offset(0, 19).Value = "'" & UserForm2.ComboBoxMatricule.Value
End With

End If
End If

USF_FicheCrééeEtImpression.Show 0

End Sub

Je vous remerci par avance, Ouille

3 réponses

Avatar
Ouille
Rebonsoir,

Une petite infos pour mes dernieres colonnes (Les colonnes de " P " a "Q" cela fonctionne elles s'ajoutent bien a la suite des données déja saisies, ce qui correspond au code :

Msg5 = MsgBox(" Voulez-vous ranger ce dossier ? ", vbYesNo + vbQuestion, "Confirmation")
If Msg5 = vbYes Then

With ActiveCell

Range("A65500", Range("A7").End(xlDown)).Offset(1, 0).Select
.Offset(0, 14).Value = "Rangé"
.Offset(0, 16).Value = "'" & UserForm2.TextBoxDateEnregistrement.Value
.Offset(0, 17).Value = "'" & Format(Now, "Long Time")
.Offset(0, 18).Value = UserForm2.TextBoxPrenomNomOperateur.Value
.Offset(0, 19).Value = "'" & UserForm2.ComboBoxMatricule.Value

End With

Else

With ActiveCell

Range("A65500", Range("A7").End(xlDown)).Offset(1, 0).Select
.Offset(0, 15).Value = "Sorti"
.Offset(0, 16).Value = "'" & UserForm2.TextBoxDateEnregistrement.Value
.Offset(0, 17).Value = "'" & Format(Now, "Long Time")
.Offset(0, 18).Value = UserForm2.TextBoxPrenomNomOperateur.Value
.Offset(0, 19).Value = "'" & UserForm2.ComboBoxMatricule.Value
End With

End If
End If

La je ne comprends plus, si vous pouvez m'eclairer car avant cela fonctionn et la seule chose que j'ai change c'est l'ordre des Offset car j'avais reorganise mes colonnes.

Merci d'avance, ouille
Avatar
Jean-François Aubert
Salut Ouille,

With ActiveCell 'Dans la feuille Tool_Données
Range("A65500", Range("A7").End(xlDown)).Offset(1, 0).Select
.Offset(0, 1).Value = "test"
'......
End With


avec ce genre de code:
1ère ligne: excel va mettre en mémoire l'adresse de la cellule active, admettons: D8
2ème ligne: tu selectionnes la plage A65536 à la première cellule vide en partant de A7
3ème ligne: excel va inscrire "test" dans la cellule D8 décalée de 0 ligne et 1 colonne (E8)
ce qui fait que dans ce code la 2ème ligne ne sert à rien.

Ecrit quelque chose comme ceci:
'**************************************
' va sélectionner la dernière cellule vide
' en remontant depuis A65536
Range("A65536").End(xlUp)(2).Select
'ou
' va sélectionner la dernière cellule vide
' en remontant depuis A20
Range("A20").End(xlUp)(2).Select

With ActiveCell 'Dans la feuille Tool_Données
.Offset(0, 1).Value = "test"
'......
End With
'*******************************
ou encore mieux:

with Range("A65536").End(xlUp)(2)
.Offset(0, 1).Value = "test"
'.......
end with




--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Ouille" a écrit dans le message de
news:
Salut a toutes et tous,

J'ai un UserForm qui me sert a rentrer des données et a les envoyer dans une feuille :

Ces données sont rentrées a partire de la ligne 8 (en lignes 7 j'ai mes entètes de lignes) de la
Colonne "A" a la Colonne "T"


Mon souci au moment de la validation c'est que celles-ci se rentre sur la ligne des entètes :
Voici le code du Bouton "Valider"


Private Sub BoutNouvelle_Click()

If ComboBoxClients = "" Then
MsgBox "QUI EST LE DONNEUR D'ORDRE DE CE PRODUIT ?", vbCritical, "ATTENTION"
ComboBoxClients.SetFocus
Exit Sub
End If

If TextBoxReferenceProduit = "" Then
MsgBox "VOUS N'AVEZ PAS SAISIE DE REFERENCE PRODUIT !", vbCritical, "ATTENTION"
TextBoxReferenceProduit.SetFocus
Exit Sub
End If

If TextBoxDesignationProduit = "" Then
MsgBox "VOTRE REFERENCE N'A PAS DE DESIGNATION !", vbCritical, "ATTENTION"
TextBoxDesignationProduit.SetFocus
Exit Sub
End If

If TextBoxCasier = "" Then
MsgBox "VOUS NE COMPTEZ PAS LE RANGER VOTRE DOSSIER !", vbCritical, "ATTENTION"
TextBoxCasier.SetFocus
Exit Sub
End If

If ComboBoxMatricule = "" Then
MsgBox "PERSONNE N'ENTRE CES DONNEES !", vbCritical, "ATTENTION"
ComboBoxMatricule.SetFocus
Exit Sub
End If

Cible = Application.WorksheetFunction.Substitute(TextBoxCableurs, vbCrLf, Chr(10) & vbTab)

If TextBoxSup > "" Then Sup = vbCrLf & "Sup : " & TextBoxSup.Value
If TextBoxIndice > "" Then Indice = vbCrLf & "Indice : " & TextBoxIndice.Value
If TextBoxVersion > "" Then Version = vbCrLf & "Version : " & TextBoxVersion.Value

Msg7 = MsgBox("Vous allez créer une fiche avec les données suivantes :" _
& vbCrLf & vbCrLf & "Société donneuse d'ordre : " & TextBoxSociete.Value _
& vbCrLf & "Interlocuteur : " & ComboBoxClients.Value _
& vbCrLf & vbCrLf & "Désignation produit : " & TextBoxDesignationProduit.Value _
& vbCrLf & "Référence : " & TextBoxReferenceProduit.Value _
& Version _
& Indice _
& Sup _
& vbCrLf & vbCrLf & "Cableurs suceptible de faire le produit : " _
& vbCrLf & vbCrLf & vbTab & Cible & vbCrLf & vbCrLf & " Voulez-vous continuer ?", vbYesNo +
vbQuestion, "Confirmation")


If Msg7 = vbNo Then Exit Sub
If Msg7 = vbYes Then

'créer

With ActiveCell 'Dans la feuille Tool_Données

Range("A65500", Range("A7").End(xlDown)).Offset(1, 0).Select
.Value = "'" & LTrim(UserForm2.TextBoxReferenceProduit.Value) + UserForm2.TextBoxVersion.Value +
UserForm2.TextBoxIndice.Value + UserForm2.TextBoxSup.Value 'Gestion du zéro

.Offset(0, 1).Value = "'" & UserForm2.TextBoxReferenceProduit.Value 'Gestion du zéro
.Offset(0, 2).Value = UserForm2.TextBoxVersion.Value
.Offset(0, 3).Value = UserForm2.TextBoxIndice.Value
.Offset(0, 4).Value = UserForm2.TextBoxSup.Value
.Offset(0, 5).Value = UserForm2.TextBoxDesignationProduit.Value
.Offset(0, 6).Value = UserForm2.TextBoxCasier.Value
.Offset(0, 7).Value = "'" & UserForm2.TextBoxDateEnregistrement.Value 'Gestion du zéro
.Offset(0, 8).Value = UserForm2.TextBoxPrenomNomOperateur.Value
.Offset(0, 9).Value = "'" & UserForm2.ComboBoxMatricule.Value 'Gestion du zéro
.Offset(0, 10).Value = UserForm2.TextBoxCableurs.Value
.Offset(0, 11).Value = UserForm2.ComboBoxClients.Value
.Offset(0, 12).Value = UserForm2.TextBoxSociete.Value
.Offset(0, 13).Value = UserForm2.TextBoxTelClients.Value
.Offset(0, 14).Value = UserForm2.TextBoxE_Mail.Value

End With

'ActiveWorkbook.Save

'MsgBox " La fiche est créée et l'impression est en court"

'comptage nb de fiches

Call calculnombrefiches

With Sheets("Tool_Entete") 'Créer dans la feuille Tool_Entète

.LabelNumeroDeCasier = UserForm2.TextBoxCasier
.LabelReference = UserForm2.TextBoxReferenceProduit
.LabelVersion = UserForm2.TextBoxVersion
.LabelIndice = UserForm2.TextBoxIndice
.LabelDesignation = UserForm2.TextBoxDesignationProduit
.LabelClient = UserForm2.TextBoxSociete
.LabelIntervenant = UserForm2.ComboBoxClients
.LabelCableurs = UserForm2.TextBoxCableurs
.LabelDate = UserForm2.TextBoxDateEnregistrement
.LabelOperateur = UserForm2.TextBoxPrenomNomOperateur
.LabelSup = résultat.TextBoxSup

End With

Msg5 = MsgBox(" Voulez-vous ranger ce dossier ? ", vbYesNo + vbQuestion, "Confirmation")
If Msg5 = vbYes Then

With ActiveCell

Range("A65500", Range("A7").End(xlDown)).Offset(1, 0).Select
.Offset(0, 14).Value = "Rangé"
.Offset(0, 16).Value = "'" & UserForm2.TextBoxDateEnregistrement.Value
.Offset(0, 17).Value = "'" & Format(Now, "Long Time")
.Offset(0, 18).Value = UserForm2.TextBoxPrenomNomOperateur.Value
.Offset(0, 19).Value = "'" & UserForm2.ComboBoxMatricule.Value

End With

Else

With ActiveCell

Range("A65500", Range("A7").End(xlDown)).Offset(1, 0).Select
.Offset(0, 15).Value = "Sorti"
.Offset(0, 16).Value = "'" & UserForm2.TextBoxDateEnregistrement.Value
.Offset(0, 17).Value = "'" & Format(Now, "Long Time")
.Offset(0, 18).Value = UserForm2.TextBoxPrenomNomOperateur.Value
.Offset(0, 19).Value = "'" & UserForm2.ComboBoxMatricule.Value
End With

End If
End If

USF_FicheCrééeEtImpression.Show 0

End Sub

Je vous remerci par avance, Ouille


Avatar
Jean-François Aubert
Salut Ouille,

Et comme ceci ?

' on écrit sur une ligne plus bas que la dernière cellule de la col A
With Range("A65536").End(xlUp)(2)

.Value = "'" & LTrim(UserForm2.TextBoxReferenceProduit.Value) + UserForm2.TextBoxVersion.Value +
UserForm2.TextBoxIndice.Value + UserForm2.TextBoxSup.Value 'Gestion du zéro
.Offset(0, 1).Value = "'" & UserForm2.TextBoxReferenceProduit.Value 'Gestion du zéro
.Offset(0, 2).Value = UserForm2.TextBoxVersion.Value
.Offset(0, 3).Value = UserForm2.TextBoxIndice.Value
.Offset(0, 4).Value = UserForm2.TextBoxSup.Value
.Offset(0, 5).Value = UserForm2.TextBoxDesignationProduit.Value
.Offset(0, 6).Value = UserForm2.TextBoxCasier.Value
.Offset(0, 7).Value = "'" & UserForm2.TextBoxDateEnregistrement.Value 'Gestion du zéro
.Offset(0, 8).Value = UserForm2.TextBoxPrenomNomOperateur.Value
.Offset(0, 9).Value = "'" & UserForm2.ComboBoxMatricule.Value 'Gestion du zéro
.Offset(0, 10).Value = UserForm2.TextBoxCableurs.Value
.Offset(0, 11).Value = UserForm2.ComboBoxClients.Value
.Offset(0, 12).Value = UserForm2.TextBoxSociete.Value
.Offset(0, 13).Value = UserForm2.TextBoxTelClients.Value
.Offset(0, 14).Value = UserForm2.TextBoxE_Mail.Value

End With

Msg5 = MsgBox(" Voulez-vous ranger ce dossier ? ", vbYesNo + vbQuestion, "Confirmation")
If Msg5 = vbYes Then

' on écrit sur la même ligne que la dernière cellule de la col A
With Range("A65536").End(xlUp)(1)
' ou, c'est la même chose :
' With Range("A65536").End(xlUp)
' tandis que:
' With Range("A65536").End(xlUp)(0)
' écrira sur une ligne plus haut que la dernière de la col A

.Offset(0, 15).Value = "Rangés"
.Offset(0, 16).Value = "'" & UserForm2.TextBoxDateEnregistrement.Value
.Offset(0, 17).Value = "'" & Format(Now, "Long Time")
.Offset(0, 18).Value = UserForm2.TextBoxPrenomNomOperateur.Value
.Offset(0, 19).Value = "'" & UserForm2.ComboBoxMatricule.Value
End With

Else

With Range("A65536").End(xlUp)(1)
.Offset(0, 15).Value = "Sorti"
.Offset(0, 16).Value = "'" & UserForm2.TextBoxDateEnregistrement.Value
.Offset(0, 17).Value = "'" & Format(Now, "Long Time")
.Offset(0, 18).Value = UserForm2.TextBoxPrenomNomOperateur.Value
.Offset(0, 19).Value = "'" & UserForm2.ComboBoxMatricule.Value
End With

End If




--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Ouille" a écrit dans le message de
news:
Jean-Francois, le forum

Je viens de modifier mon code et je te remercie por tes explications pour la premiere partie cela
fonctionne c'est adire des colonnes"A" a "O", mais des colonnes "P" a "T" s'écrivent sur mes entètes

donc voila ce que j'ai fait dans un premier temps :

With Range("A65536").End(xlUp)(2)

.Value = "'" & LTrim(UserForm2.TextBoxReferenceProduit.Value) + UserForm2.TextBoxVersion.Value
+ UserForm2.TextBoxIndice.Value + UserForm2.TextBoxSup.Value 'Gestion du zéro

.Offset(0, 1).Value = "'" & UserForm2.TextBoxReferenceProduit.Value 'Gestion du zéro
.Offset(0, 2).Value = UserForm2.TextBoxVersion.Value
.Offset(0, 3).Value = UserForm2.TextBoxIndice.Value
.Offset(0, 4).Value = UserForm2.TextBoxSup.Value
.Offset(0, 5).Value = UserForm2.TextBoxDesignationProduit.Value
.Offset(0, 6).Value = UserForm2.TextBoxCasier.Value
.Offset(0, 7).Value = "'" & UserForm2.TextBoxDateEnregistrement.Value 'Gestion du zéro
.Offset(0, 8).Value = UserForm2.TextBoxPrenomNomOperateur.Value
.Offset(0, 9).Value = "'" & UserForm2.ComboBoxMatricule.Value 'Gestion du zéro
.Offset(0, 10).Value = UserForm2.TextBoxCableurs.Value
.Offset(0, 11).Value = UserForm2.ComboBoxClients.Value
.Offset(0, 12).Value = UserForm2.TextBoxSociete.Value
.Offset(0, 13).Value = UserForm2.TextBoxTelClients.Value
.Offset(0, 14).Value = UserForm2.TextBoxE_Mail.Value

End With

Msg5 = MsgBox(" Voulez-vous ranger ce dossier ? ", vbYesNo + vbQuestion, "Confirmation")
If Msg5 = vbYes Then

With ActiveCell
Range("A65500", Range("A7").End(xlDown)).Offset(1, 0).Select
.Offset(0, 15).Value = "Rangé"
.Offset(0, 16).Value = "'" & UserForm2.TextBoxDateEnregistrement.Value
.Offset(0, 17).Value = "'" & Format(Now, "Long Time")
.Offset(0, 18).Value = UserForm2.TextBoxPrenomNomOperateur.Value
.Offset(0, 19).Value = "'" & UserForm2.ComboBoxMatricule.Value

End With

Else

With ActiveCell
Range("A65500", Range("A7").End(xlDown)).Offset(1, 0).Select
.Offset(0, 15).Value = "Sorti"
.Offset(0, 16).Value = "'" & UserForm2.TextBoxDateEnregistrement.Value
.Offset(0, 17).Value = "'" & Format(Now, "Long Time")
.Offset(0, 18).Value = UserForm2.TextBoxPrenomNomOperateur.Value
.Offset(0, 19).Value = "'" & UserForm2.ComboBoxMatricule.Value
End With

End If
End If

Ensuite vu le remplissage de mes cellules de la maniere qu'il s'operait j'ai voulu modifier la
deuxieme partie pour le choix "Rangé" ou "Sorti" de la meme maniere que tu m'a conseille comme ceci


Msg5 = MsgBox(" Voulez-vous ranger ce dossier ? ", vbYesNo + vbQuestion, "Confirmation")
If Msg5 = vbYes Then

With Range("A65536").End(xlUp)(2)

.Offset(0, 15).Value = "Rangé"
.Offset(0, 16).Value = "'" & UserForm2.TextBoxDateEnregistrement.Value
.Offset(0, 17).Value = "'" & Format(Now, "Long Time")
.Offset(0, 18).Value = UserForm2.TextBoxPrenomNomOperateur.Value
.Offset(0, 19).Value = "'" & UserForm2.ComboBoxMatricule.Value

End With

Else

With Range("A65536").End(xlUp)(2)

.Offset(0, 15).Value = "Sorti"
.Offset(0, 16).Value = "'" & UserForm2.TextBoxDateEnregistrement.Value
.Offset(0, 17).Value = "'" & Format(Now, "Long Time")
.Offset(0, 18).Value = UserForm2.TextBoxPrenomNomOperateur.Value
.Offset(0, 19).Value = "'" & UserForm2.ComboBoxMatricule.Value
End With

End If
End If
et la cela m'ecrit les donnes a une ligne de décallage par rapport a la premiere saisie exemple :

Premiere saisie en ligne A10 ->O10 deuxième saisie en P11->T11

Merci encore pour ton aide, Ouille