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

Encore et toujours des problemes avec Userforme

8 réponses
Avatar
Rex
Bonsoir à toutes et tous

Ce message est un peu long et je m'en excuse, mais j'essaye d'être le plus
explicatif possible
Merci à ceux d'entre vous qui auront la gentillesse de me lire et le pouvoir
de m'aider :-)))))))))


Malgré les aides de différents illustres Exceliens de ce forum (Daniel,
Papou entre-autres) que je remercie encore une fois

Je n'arrive pas à faire ce que je veux
C'est un truc tout simple
Et je me suis dis qu'avec les truc que l'on m'a donnés ces derniers temps je
devrai être capable de trouver tout seul

EH ben NON

Et je deviens fou!

Voici de quoi il s'agit

Un Userform contenant une série de champs à remplir
Chaque champs remplis (ou Box cliqué) doit, lors du transfert commander par
un Bouton "Valider",
Mettre les infos dans les cellules adjacentes sur la même ligne
Et quand on remets de l'info dans les champs et que l'on clique sur
"Valider" il met l'info sur la ligne suivante

Tout cela fonctionne impeccablement bien


MAIS

Si je ferme le Userforme et que je le relance
Il me remets les infos à partir de la première ligne en remplaçant toutes
les infos existantes

Donc je dois faire en sorte que chaque fois que je clique sur "Valider",
l'info se mets sur la première ligne VIDE

Et malgré les trucs et les bouts de code testés, j'yarrive pas et je deviens
FOU


J'ai essayés des trucs comme

Range("a65536").End(xlUp)(2).Value = ""
ou comme


Range("a1").Select
Dim NextCell As Range
Set NextCell = ActiveCell
Do While NextCell <> ""
ActiveCell.Offset(1).Select
Set NextCell = ActiveCell
Loop
Set NextCell = Nothing

Ou encore


If Range("a2").Value <> "" Then
Range("a65536").End(xlUp)(2).Value = ""
ActiveCell.Offset(1, 0).Select
Else
Range("a2").Select
End If

Mais rien ne fait ce que je veux

Et j'ai mis ces boute de codes soit en ouverture (Innitialise userforme)
ou juste avant le transfère de donnés sans succès

Alors je vous demande de me dire ou je fais une connerie s'il vous plait

D'avance un grand merci

Rex

8 réponses

Avatar
Rex
Bonsoir

Apparement tous le monde est au lit

Je vais donc faire la même chose

Et je vous contacte demain

Bon nuit

Rex


"Rex" a écrit dans le message de news:
#
Bonsoir à toutes et tous

Ce message est un peu long et je m'en excuse, mais j'essaye d'être le plus
explicatif possible
Merci à ceux d'entre vous qui auront la gentillesse de me lire et le
pouvoir

de m'aider :-)))))))))


Malgré les aides de différents illustres Exceliens de ce forum (Daniel,
Papou entre-autres) que je remercie encore une fois

Je n'arrive pas à faire ce que je veux
C'est un truc tout simple
Et je me suis dis qu'avec les truc que l'on m'a donnés ces derniers temps
je

devrai être capable de trouver tout seul

EH ben NON

Et je deviens fou!

Voici de quoi il s'agit

Un Userform contenant une série de champs à remplir
Chaque champs remplis (ou Box cliqué) doit, lors du transfert commander
par

un Bouton "Valider",
Mettre les infos dans les cellules adjacentes sur la même ligne
Et quand on remets de l'info dans les champs et que l'on clique sur
"Valider" il met l'info sur la ligne suivante

Tout cela fonctionne impeccablement bien


MAIS

Si je ferme le Userforme et que je le relance
Il me remets les infos à partir de la première ligne en remplaçant toutes
les infos existantes

Donc je dois faire en sorte que chaque fois que je clique sur "Valider",
l'info se mets sur la première ligne VIDE

Et malgré les trucs et les bouts de code testés, j'yarrive pas et je
deviens

FOU


J'ai essayés des trucs comme

Range("a65536").End(xlUp)(2).Value = ""
ou comme


Range("a1").Select
Dim NextCell As Range
Set NextCell = ActiveCell
Do While NextCell <> ""
ActiveCell.Offset(1).Select
Set NextCell = ActiveCell
Loop
Set NextCell = Nothing

Ou encore


If Range("a2").Value <> "" Then
Range("a65536").End(xlUp)(2).Value = ""
ActiveCell.Offset(1, 0).Select
Else
Range("a2").Select
End If

Mais rien ne fait ce que je veux

Et j'ai mis ces boute de codes soit en ouverture (Innitialise userforme)
ou juste avant le transfère de donnés sans succès

Alors je vous demande de me dire ou je fais une connerie s'il vous plait

D'avance un grand merci

Rex











Avatar
JLuc
*Bonjour Rex*,

Essaie quelque chose du genre : (dans le code du bouton "Valider")
Whith Sheets("Feuil1")
ligne = .Range("A65536").End(xlUp).Row
.Cells(ligne, 1) = "Info col A"
.Cells(ligne, 2) = "Info col B"
' ...
End With

--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O
Avatar
Rai
Bonsoir à toutes et tous

[snip]


Un Userform contenant une série de champs à remplir
Chaque champs remplis (ou Box cliqué) doit, lors du transfert commander par
un Bouton "Valider",
Mettre les infos dans les cellules adjacentes sur la même ligne
Et quand on remets de l'info dans les champs et que l'on clique sur
"Valider" il met l'info sur la ligne suivante

[snip]

Donc je dois faire en sorte que chaque fois que je clique sur "Valider",
l'info se mets sur la première ligne VIDE


Mais rien ne fait ce que je veux

Et j'ai mis ces boute de codes soit en ouverture (Innitialise userforme)
ou juste avant le transfère de donnés sans succès

Alors je vous demande de me dire ou je fais une connerie s'il vous plait

D'avance un grand merci

Rex



Bonjour Rex,

Espérons qu'en ce dimanche matin la seule chose qui te rende fou soit le
changement d'heure ;o))

Pour ta résolution de problème, je te propose une méthode :
- créer une variable publique qui va mémoriser ta dernière ligne
- pour chaque saisie incrémenter cette variable (re ligne vide)
- et recommencer ...

Cela donnera quelquechose du genre :

Public Ligne As Double

Private Sub btn_quitter_Click()
Unload Me
End Sub

Private Sub btn_valider_Click()
' Ligne contient la dernière ligne utilisée
' ==> on va se placer sur la première vide
Ligne = Ligne + 1

' on remplit la feuille avec les valeurs
' (ne pas oublier de sélectionner la bonne feuille AVANT,
' ou d'utiliser la méthode 'With' ... 'End With')
' et on vide les champs de saisie
Cells(Ligne, 1) = TextBox1.Value
TextBox1.Value = ""
' pendant qu'on y est, on redonne le focus au 1er champ de saisie
' ça facilite la vie de l'utilisateur
TextBox1.SetFocus

Cells(Ligne, 2) = TextBox2.Value
TextBox2.Value = ""
Cells(Ligne, 3) = TextBox3.Value
TextBox3.Value = ""
End Sub

Private Sub UserForm_Initialize()
' On détecte la dernière ligne utilisée
' et on mémorise son numéro
Ligne = Range("A65535").End(xlUp).Row
End Sub


A adapter à ton Userform.

Bon dimanche

rai

Avatar
Rex
Bonjour

He non


Cela ne vas toujours pas
Mais merci pour la proposition

Je vais poster le code comme cela on verra peut-être un peu plus claire

A tantôt

Rex


"JLuc" a écrit dans le message de news:

*Bonjour Rex*,

Essaie quelque chose du genre : (dans le code du bouton "Valider")
Whith Sheets("Feuil1")
ligne = .Range("A65536").End(xlUp).Row
.Cells(ligne, 1) = "Info col A"
.Cells(ligne, 2) = "Info col B"
' ...
End With

--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O




Avatar
Rex
Bonjour à toutes et tous

Voici le code que j'utilise

Vous verrez qu'il y a pas mal de ligne en suspend
Ce sont quelques unes des différentes tentatives que j'ai faites

En espérant que vous trouverez la connerie, parce que c'est une petite
connerie qui coince

A bientôt

Et encore merci


Private Sub Quitter_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
' Ceci met ma date et l'heure

Me.Date_Saisie = Now

' Ceci devrait mettre la pemière cellule vide de la colonne A comme cellule
active


' Whith Sheets("Feuil1")
ligne = Range("A65536").End(xlUp).Row
' .Cells(ligne, 1) = "Info col A"
' .Cells(ligne, 2) = "Info col B"
' ...
' End With





' Range("a1").Select
' Dim NextCell As Range
' Set NextCell = ActiveCell
' Do While NextCell <> ""
' ActiveCell.Offset(1).Select
' Set NextCell = ActiveCell
' Loop
' Set NextCell = Nothing

End Sub



' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


Private Sub Validation_Click()

' Ceci verifie si les champs "Requis" sont rempli
'--- Contrôles avant transfert

If Me.Nom = "" Then
MsgBox "saisir un nom!"
Me.Nom.SetFocus
End If

If Me.Couriel = "" Then
MsgBox "saisir un couriel!"
Me.Couriel.SetFocus
End If




' If Range("a2").Value <> "" Then
' Range("a65536").End(xlUp)(2).Value = ""
' ActiveCell.Offset(1, 0).Select
' Else
' Range("a2").Select
' End If


' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

' Ceci vérifie que la sélection Enseignement - Commerial est faite

For Each c In Me.Fonction.Controls
If c.Value = True Then
' Range("a2").Select
' Range("a65536").End(xlUp)(2).Value = ""
ActiveCell.Offset(1, 0).Select
ActiveCell = c.Caption
End If


' Ceci transfer les données vers les cellules adéquates
'--- Transfert BD

Next c
ActiveCell.Offset(0, 1).Value = Val(ActiveCell.Offset(-1, 1)) + 1
ActiveCell.Offset(0, 2).Value = Me.Nom
ActiveCell.Offset(0, 3).Value = Me.Prenom
ActiveCell.Offset(0, 4).Value = Me.Ecole
ActiveCell.Offset(0, 5).Value = Me.Date_Saisie
ActiveCell.Offset(0, 6).Value = Me.Rue
ActiveCell.Offset(0, 7).Value = Me.Code
ActiveCell.Offset(0, 8).Value = Me.Commune
ActiveCell.Offset(0, 9).Value = Me.Telephone
ActiveCell.Offset(0, 10).Value = Me.GSM
ActiveCell.Offset(0, 11).Value = Me.Couriel
ActiveCell.Offset(0, 12).Value = Me.Site




' Checbox list
' Mets un X dans les colonnes suivants les Box sélectionnés

If Me.CB_1.Value = True Then
ActiveCell.Offset(0, 14).Value = "X"
End If

If Me.CB_2.Value = True Then
ActiveCell.Offset(0, 15).Value = "X"
End If

If Me.CB_3.Value = True Then
ActiveCell.Offset(0, 16).Value = "X"
End If

If Me.CB_4.Value = True Then
ActiveCell.Offset(0, 17).Value = "X"
End If

If Me.CB_5.Value = True Then
ActiveCell.Offset(0, 18).Value = "X"
End If

If Me.CB_6.Value = True Then
ActiveCell.Offset(0, 19).Value = "X"
End If

If Me.CB_7.Value = True Then
ActiveCell.Offset(0, 20).Value = "X"
End If

If Me.CB_8.Value = True Then
ActiveCell.Offset(0, 21).Value = "X"
End If

If Me.CB_9.Value = True Then
ActiveCell.Offset(0, 22).Value = "X"
End If

If Me.CB_10.Value = True Then
ActiveCell.Offset(0, 23).Value = "X"
End If

If Me.CB_11.Value = True Then
ActiveCell.Offset(0, 24).Value = "X"
End If

If Me.CB_12.Value = True Then
ActiveCell.Offset(0, 25).Value = "X"
End If



'-- Remise à zéro des champs

Me.Nom = ""
Me.Prenom = ""
Me.Ecole = ""
Me.Date_Saisie = ""
Me.Rue = ""
Me.Code = ""
Me.Commune = ""
Me.Telephone = ""
Me.GSM = ""
Me.Couriel = ""
Me.Site = ""
Me.CB_1 = False
Me.CB_2 = False
Me.CB_3 = False
Me.CB_4 = False
Me.CB_5 = False
Me.CB_6 = False
Me.CB_7 = False
Me.CB_8 = False
Me.CB_9 = False
Me.CB_10 = False
Me.CB_11 = False
Me.CB_12 = False

End Sub
Avatar
Youky
' Ceci devrait mettre la pemière cellule vide de la colonne A comme
cellule
active


Range("A" & Range("A65536").End(xlUp).Row + 1).Select

Youky

"Rex" a écrit dans le message de news:
%
Bonjour à toutes et tous

Voici le code que j'utilise

Vous verrez qu'il y a pas mal de ligne en suspend
Ce sont quelques unes des différentes tentatives que j'ai faites

En espérant que vous trouverez la connerie, parce que c'est une petite
connerie qui coince

A bientôt

Et encore merci


Private Sub Quitter_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
' Ceci met ma date et l'heure

Me.Date_Saisie = Now

' Ceci devrait mettre la pemière cellule vide de la colonne A comme
cellule
active


' Whith Sheets("Feuil1")
ligne = Range("A65536").End(xlUp).Row
' .Cells(ligne, 1) = "Info col A"
' .Cells(ligne, 2) = "Info col B"
' ...
' End With





' Range("a1").Select
' Dim NextCell As Range
' Set NextCell = ActiveCell
' Do While NextCell <> ""
' ActiveCell.Offset(1).Select
' Set NextCell = ActiveCell
' Loop
' Set NextCell = Nothing

End Sub



' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


Private Sub Validation_Click()

' Ceci verifie si les champs "Requis" sont rempli
'--- Contrôles avant transfert

If Me.Nom = "" Then
MsgBox "saisir un nom!"
Me.Nom.SetFocus
End If

If Me.Couriel = "" Then
MsgBox "saisir un couriel!"
Me.Couriel.SetFocus
End If




' If Range("a2").Value <> "" Then
' Range("a65536").End(xlUp)(2).Value = ""
' ActiveCell.Offset(1, 0).Select
' Else
' Range("a2").Select
' End If


' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

' Ceci vérifie que la sélection Enseignement - Commerial est faite

For Each c In Me.Fonction.Controls
If c.Value = True Then
' Range("a2").Select
' Range("a65536").End(xlUp)(2).Value = ""
ActiveCell.Offset(1, 0).Select
ActiveCell = c.Caption
End If


' Ceci transfer les données vers les cellules adéquates
'--- Transfert BD

Next c
ActiveCell.Offset(0, 1).Value = Val(ActiveCell.Offset(-1, 1)) + 1
ActiveCell.Offset(0, 2).Value = Me.Nom
ActiveCell.Offset(0, 3).Value = Me.Prenom
ActiveCell.Offset(0, 4).Value = Me.Ecole
ActiveCell.Offset(0, 5).Value = Me.Date_Saisie
ActiveCell.Offset(0, 6).Value = Me.Rue
ActiveCell.Offset(0, 7).Value = Me.Code
ActiveCell.Offset(0, 8).Value = Me.Commune
ActiveCell.Offset(0, 9).Value = Me.Telephone
ActiveCell.Offset(0, 10).Value = Me.GSM
ActiveCell.Offset(0, 11).Value = Me.Couriel
ActiveCell.Offset(0, 12).Value = Me.Site




' Checbox list
' Mets un X dans les colonnes suivants les Box sélectionnés

If Me.CB_1.Value = True Then
ActiveCell.Offset(0, 14).Value = "X"
End If

If Me.CB_2.Value = True Then
ActiveCell.Offset(0, 15).Value = "X"
End If

If Me.CB_3.Value = True Then
ActiveCell.Offset(0, 16).Value = "X"
End If

If Me.CB_4.Value = True Then
ActiveCell.Offset(0, 17).Value = "X"
End If

If Me.CB_5.Value = True Then
ActiveCell.Offset(0, 18).Value = "X"
End If

If Me.CB_6.Value = True Then
ActiveCell.Offset(0, 19).Value = "X"
End If

If Me.CB_7.Value = True Then
ActiveCell.Offset(0, 20).Value = "X"
End If

If Me.CB_8.Value = True Then
ActiveCell.Offset(0, 21).Value = "X"
End If

If Me.CB_9.Value = True Then
ActiveCell.Offset(0, 22).Value = "X"
End If

If Me.CB_10.Value = True Then
ActiveCell.Offset(0, 23).Value = "X"
End If

If Me.CB_11.Value = True Then
ActiveCell.Offset(0, 24).Value = "X"
End If

If Me.CB_12.Value = True Then
ActiveCell.Offset(0, 25).Value = "X"
End If



'-- Remise à zéro des champs

Me.Nom = ""
Me.Prenom = ""
Me.Ecole = ""
Me.Date_Saisie = ""
Me.Rue = ""
Me.Code = ""
Me.Commune = ""
Me.Telephone = ""
Me.GSM = ""
Me.Couriel = ""
Me.Site = ""
Me.CB_1 = False
Me.CB_2 = False
Me.CB_3 = False
Me.CB_4 = False
Me.CB_5 = False
Me.CB_6 = False
Me.CB_7 = False
Me.CB_8 = False
Me.CB_9 = False
Me.CB_10 = False
Me.CB_11 = False
Me.CB_12 = False

End Sub




Avatar
Rex
Bonjour

Et merci pour ta réponse

qui fonctionne !!!!

MAIS

Et je ne comprends pas du tout

Si je change le petit bout de code et que je sauve le fichier, pas de
problème

Par contre si je fais quelques entrées de données et puis que j'essaye de
sauver
Excel me mets un message " Fichier non-enregistrer"

As-tu une idée?

En tous les cas merci

Rex

Qui recommence à sourire un peu



"Youky" a écrit dans le message de news:
#iiJs$
' Ceci devrait mettre la pemière cellule vide de la colonne A comme
cellule
active


Range("A" & Range("A65536").End(xlUp).Row + 1).Select

Youky

"Rex" a écrit dans le message de news:
%
Bonjour à toutes et tous

Voici le code que j'utilise

Vous verrez qu'il y a pas mal de ligne en suspend
Ce sont quelques unes des différentes tentatives que j'ai faites

En espérant que vous trouverez la connerie, parce que c'est une petite
connerie qui coince

A bientôt

Et encore merci


Private Sub Quitter_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
' Ceci met ma date et l'heure

Me.Date_Saisie = Now

' Ceci devrait mettre la pemière cellule vide de la colonne A comme
cellule
active


' Whith Sheets("Feuil1")
ligne = Range("A65536").End(xlUp).Row
' .Cells(ligne, 1) = "Info col A"
' .Cells(ligne, 2) = "Info col B"
' ...
' End With





' Range("a1").Select
' Dim NextCell As Range
' Set NextCell = ActiveCell
' Do While NextCell <> ""
' ActiveCell.Offset(1).Select
' Set NextCell = ActiveCell
' Loop
' Set NextCell = Nothing

End Sub



' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


Private Sub Validation_Click()

' Ceci verifie si les champs "Requis" sont rempli
'--- Contrôles avant transfert

If Me.Nom = "" Then
MsgBox "saisir un nom!"
Me.Nom.SetFocus
End If

If Me.Couriel = "" Then
MsgBox "saisir un couriel!"
Me.Couriel.SetFocus
End If




' If Range("a2").Value <> "" Then
' Range("a65536").End(xlUp)(2).Value = ""
' ActiveCell.Offset(1, 0).Select
' Else
' Range("a2").Select
' End If


' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

' Ceci vérifie que la sélection Enseignement - Commerial est faite

For Each c In Me.Fonction.Controls
If c.Value = True Then
' Range("a2").Select
' Range("a65536").End(xlUp)(2).Value = ""
ActiveCell.Offset(1, 0).Select
ActiveCell = c.Caption
End If


' Ceci transfer les données vers les cellules adéquates
'--- Transfert BD

Next c
ActiveCell.Offset(0, 1).Value = Val(ActiveCell.Offset(-1, 1)) + 1
ActiveCell.Offset(0, 2).Value = Me.Nom
ActiveCell.Offset(0, 3).Value = Me.Prenom
ActiveCell.Offset(0, 4).Value = Me.Ecole
ActiveCell.Offset(0, 5).Value = Me.Date_Saisie
ActiveCell.Offset(0, 6).Value = Me.Rue
ActiveCell.Offset(0, 7).Value = Me.Code
ActiveCell.Offset(0, 8).Value = Me.Commune
ActiveCell.Offset(0, 9).Value = Me.Telephone
ActiveCell.Offset(0, 10).Value = Me.GSM
ActiveCell.Offset(0, 11).Value = Me.Couriel
ActiveCell.Offset(0, 12).Value = Me.Site




' Checbox list
' Mets un X dans les colonnes suivants les Box sélectionnés

If Me.CB_1.Value = True Then
ActiveCell.Offset(0, 14).Value = "X"
End If

If Me.CB_2.Value = True Then
ActiveCell.Offset(0, 15).Value = "X"
End If

If Me.CB_3.Value = True Then
ActiveCell.Offset(0, 16).Value = "X"
End If

If Me.CB_4.Value = True Then
ActiveCell.Offset(0, 17).Value = "X"
End If

If Me.CB_5.Value = True Then
ActiveCell.Offset(0, 18).Value = "X"
End If

If Me.CB_6.Value = True Then
ActiveCell.Offset(0, 19).Value = "X"
End If

If Me.CB_7.Value = True Then
ActiveCell.Offset(0, 20).Value = "X"
End If

If Me.CB_8.Value = True Then
ActiveCell.Offset(0, 21).Value = "X"
End If

If Me.CB_9.Value = True Then
ActiveCell.Offset(0, 22).Value = "X"
End If

If Me.CB_10.Value = True Then
ActiveCell.Offset(0, 23).Value = "X"
End If

If Me.CB_11.Value = True Then
ActiveCell.Offset(0, 24).Value = "X"
End If

If Me.CB_12.Value = True Then
ActiveCell.Offset(0, 25).Value = "X"
End If



'-- Remise à zéro des champs

Me.Nom = ""
Me.Prenom = ""
Me.Ecole = ""
Me.Date_Saisie = ""
Me.Rue = ""
Me.Code = ""
Me.Commune = ""
Me.Telephone = ""
Me.GSM = ""
Me.Couriel = ""
Me.Site = ""
Me.CB_1 = False
Me.CB_2 = False
Me.CB_3 = False
Me.CB_4 = False
Me.CB_5 = False
Me.CB_6 = False
Me.CB_7 = False
Me.CB_8 = False
Me.CB_9 = False
Me.CB_10 = False
Me.CB_11 = False
Me.CB_12 = False

End Sub








Avatar
papou
Bonjour Rex
Je pense que si tu nous donnais un exemple de ce que tu veux faire, on
pourrait peut-être mieux t'aider.
Place un exemple de ton fichier sur ci-joint :
http://cjoint.com/
Cordialement
Pascal