Finaliser une macro

Bonjour le Forum, à tous et à toutes,

Je viens vers vous pour une aide. Je cherche à modifier des données dans un listbox et aussi dans la feuille de base de donnée. J'ai vu et lu beaucoup de fil concernant ce sujet "modification données dans listbox" et aussi beaucoup de bouts de codes dans le forum, mais en vain.

Merci d'avance pour l'aide, un bout de code pour la modification des données. Pour information, les codes dans ce fichier sont des codes que j'ai vu dans ce forum et ailleurs et j'adapte à mon besoin de comprendre,

Merci.

SengH

Bonjour,

Un essai ...

Pour la partie modification ...

ric

Bonjour ric,

Merci de votre réponse, j'ai testé, modifié sur toutes les lignes sauf une, la dernière qui ne passe pas, c.à.dire pas de modification sur la ligne 6.

Malgré je modifie tous les textbox.

Je continue à regarder dans le bout de code que vous avez mis.

Merci

Bonjour,

La dernière ligne ...

Dans ton fichier exemple ...

Il y a comparaison entre le contenu d'un textbox (qui est du texte, comme le dit son nom "textbox") et le contenu de la cellule B14 qui est numérique ...

La comparaison donne donc FAUX ...

Si dans B14 > le numéro de passeport était en texte > exemple : Fr-456789 au lieu de 456789 > la comparaison s'avère fructueuse et la ligne est modifiée ...

Ma question > est-ce qu'il y aura des numéros de Passeport numériques ? Ou ils seront toujours alphanumériques ? Ou encore, il y aura les deux types ??

La gestion de la comparaison devra être adaptée au besoin ...

Dès que j'ai la réponse > je te proposerai une gestion de la dernière ligne ...

A+

ric

Bonjour,

Pour vous répondre, le n° de passeport doit être de cette façon : Fr-19-xxxxx donc les x représente les chiffres, le 19 c'est l'année donc il peut être 20 pour 2020 ou 21 pour 2021.

C'est vrai, je mets des chiffres dans mon fichier sur la dernière ligne, c'est quand j'ai testé les lignes de code avant de venir sur le forum.

Merci d'avance.

Bonjour,

Il n'y a donc pas besoin de modifier le code > la recherche aboutie même sur la dernière ligne > et celle-ci est bien modifiée ...

Est-ce bien le cas ?

ric

Bonjour Ric,

Ce n'est pas le cas, je prends la dernière ligne et je fais la modification au n° de passeport en ajoutant FR-19- et modifiant les restant en 00148, résultat pas de changement

au niveau du n° de passeport. Est ce que vous pouvez modifier le code pour, s'il y a erreur de saisie comme dans mon exemple = que des chiffres ou le textbox2 est vide > passeport pas encore commandé, et que je puisse saisie dans les autres textbox. C'est ce que j'ai oublier de vous informer que le tableau est envoyé sans n° de passeport et dès que la fédération me renvoie le tableau avec des numéros attribués à chaque personne que je modifie la colonne "B" en saisissant le numéro attribué à chaque personne.

Merci

Bonjour,

Si l'on utilise le numéro dans la colonne A et dans le Textbox1 > le numéro de passeport peut être vide ...

If Sheets("Commande").Cells(Ligne, "A") = CInt(Me.TextBox1) Then

Pour le masque de saisi du numéro de passeport > je suis moins habile > mais, je vais tenter de te tricoter quelque chose ...

ric

Bonsoir le fil, bonsoir le forum,

Une autre approche FullComment :

10sengh-ep-v01.xlsm (50.71 Ko)


Bonjour à tous,

Intéressant ...

Il n'y manque que le masque de saisie pour le numéro de passeport ...

ric

Re,

Exact Ric, je ne m'y suis pas penché dessus...

Bonsoir le forum, ThauThème, Ric,

Merci à vous deux d'avoir penché sur mon souci. Chapeau!!!

Je peux maintenant regarder à fond sur les lignes de code pour apprendre encore plus.

@Thauthème,

une petite question, comment faire pour ne pas avoir en majuscule les colonnes "Noms"?

Bonne soirée à vous tous et encore merciiiiiiiiiiiiiiiii.

SengH

Re,

Remplace la procédure Export par celle-ci :

Sub Export()
Dim CTRL As Control 'déclare la variable CTRL (ConTRôLe)

For Each CTRL In UserForm1.Controls 'boucle sur tous les contrôle CTRL de l'UserForm en cours
    If CTRL.Tag <> "" Then 'condition : si la propriété [Tag] du contrôle n'est pas vide
        Select Case CTRL.Name 'agit en fonction du nom du contrôle
            Case "OptionButton1" 'cas "OptionButton1"
                If CTRL.Value = True Then O.Cells(LR, CTRL.Tag).Value = 1 Else O.Cells(LR, CTRL.Tag).Value = "" 'si l'option est cochée, renvoie 1 dans la cellule ligne : LR, colonne : propriété [Tag] du contrôle, sinon vide la cellule
            Case "OptionButton2" 'cas "OptionButton2"
                If CTRL.Value = True Then O.Cells(LR, CTRL.Tag).Value = 1 Else O.Cells(LR, CTRL.Tag).Value = "" 'si l'option est cochée, renvoie 1 dans la cellule ligne : LR, colonne : propriété [Tag] du contrôle, sinon vide la cellule
            Case "OptionButton3" 'cas "OptionButton3"
                If CTRL.Value = True Then O.Cells(LR, CTRL.Tag).Value = 65 Else O.Cells(LR, CTRL.Tag).Value = "" 'si l'option est cochée, renvoie 65 dans la cellule ligne : LR, colonne : propriété [Tag] du contrôle, sinon vide la cellule
            Case "OptionButton4" 'cas "OptionButton4"
                If CTRL.Value = True Then O.Cells(LR, CTRL.Tag).Value = 50 Else O.Cells(LR, CTRL.Tag).Value = "" 'si l'option est cochée, renvoie 50 dans la cellule ligne : LR, colonne : propriété [Tag] du contrôle, sinon vide la cellule
            Case "TextBox2", "TextBox3", "TextBox7" 'cas "TextBox3" et "Textbox7"
                'renvoie la valeur du contrôle avec la première lettre en majuscule dans la cellule ligne : LR, colonne : propriété [Tag] du contrôle
                O.Cells(LR, CTRL.Tag).Value = Application.WorksheetFunction.Proper(CTRL.Value)
            Case "TextBox4" 'cas "TextBox4" (pour éviter les jours et les mois inversés)
                'renvoie la valeur du contrôle sous forme de numéro de date sérial dans la cellule ligne : LR, colonne : propriété [Tag] du contrôle
                If CTRL.Value <> "" Then O.Cells(LR, CTRL.Tag).Value = DateSerial(Year(CTRL.Value), Month(CTRL.Value), Day(CTRL.Value))
            Case "TextBox9" 'cas "TextBox9"
                'renvoie la valeur du contrôle au format numéro de téléphone dans la cellule ligne : LR, colonne : propriété [Tag] du contrôle
                O.Cells(LR, CTRL.Tag).Value = Format(CTRL.Value, "0#"" ""##"" ""##"" ""##"" ""##")
            Case Else 'tous les autres cas
                'renvoie la valeur du contrôle dans la cellule ligne : LR, colonne : propriété [Tag] du contrôle
                O.Cells(LR, CTRL.Tag).Value = CTRL.Value
        End Select 'fin de l'action en fonction du nom du contrôle
    End If 'fon de la condition
Next CTRL 'prochain contrôle de la boucle
End Sub

Re,

Merci,

C"est en remplaçant Ucase par

Application.WorksheetFunction.Proper

Bonne soirée

Re,

Oui c'est ça...

Rechercher des sujets similaires à "finaliser macro"