Comment adapter mon code pour passer un comboBox en TextBox [Résolu/Fermé]

Signaler
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
-
mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
-
Bonjour,


Avec l’aide du forum, j’ai avancé dans mon code mais là je bloque sur un point.

Dans la fonction initialisation de mon UserForm, je n’arrive pas à trouver la solution pour supprimer la comboBox2 et la remplacer par la textBox8 que j’ai ajouté.

Je n'arrive pas à comprendre, donc à modifier, la partie du code ci-dessous pour pouvoir l'adapter à ma modification ????

Il me semble qu’il n’y a plus que ce point à modifier.

With Me.ComboBox2
For I = 2 To ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem ws.Range("A" & I)
Next I
End With



Voici mon programme : http://www.cjoint.com/c/FDijYmW1ldt

Merci de ton aide

Cordialement

24 réponses

Messages postés
4612
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
11 décembre 2019
118
Bonsoir Mijean, bonsoir le forum,

Je ne comprends pas ton problème ?! Si tu supprimes la ComboBox2, il te faudra supprimer toutes les lignes du code où elle figure. Non ?

J'ai vu que tu avais commenté la plupart des lignes mais pas celles que tu cites (pourquoi ?) et d'autres. Notamment dans la procédure Change de cette ComboBox2 qui n'a plus lieu d'être et dans la procédure Click du CommandButton3 où elle apparaît encore et peut faire planter le code.
mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7
Bonsoir ThauTheme, bonsoir le forum,

Pour commencer, je ne maitrise pas le code VBA, j’ai commencé depuis le début de l’année à essayer de comprendre ce code en réalisant un projet afin que cela soit plus concret, donc entre ce que je croix et ce qu’il faut faire il y a peut-être une grande marche.

Je ne comprends pas ton problème ?! Si tu supprimes la ComboBox2, il te faudra supprimer toutes les lignes du code où elle figure. Non ?

Réponse : Oui bien surement, mais j’avais cru voir qu’il n’y avait plus qu’un seule endroit ou elle figurée !

J'ai vu que tu avais commenté la plupart des lignes mais pas celles que tu cites (pourquoi ?) ? Notamment dans la procédure Change de cette ComboBox2 qui n'a plus lieu d'être et dans la procédure Click du CommandButton3 où elle apparaît encore et peut faire planter le code. :

Réponse : il me semble que c’est toi qui m’avais proposé le code avec les commentaires. mais je ne comprends pas cette zone du code. Pour la ComboBox2 dans la procédure Click du CommandButton3, il faut effectivement que je trouve aussi une solution.

Donc en résumé, avec le code que tu m’avais proposé, il me semble que la ComboBox 2 qui j'avais utilisé pour faire le choix des ligne n’est pas utile donc c’est pour cette raison que je souhaité la remplacer par la textBox8.

Merci de ton aide

Cordialement
Messages postés
4612
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
11 décembre 2019
118
Bonjour Mijean, bonjour le forum,

Je ne peux pas vraiment t'aider car je ne comprends pas à quoi sert le tableau de l'onglet Devis ? Pourrais-tu me détailler l'action de chaque bouton de l'UserForm...
mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7
Bonsoir ThauTheme, bonsoir le forum,

Merci de ton aide

Pour répondre à tes questions ;

Le tableau affiche toutes les données qui sont disponible dans la base.
Si l'on clic sur une ligne, la ligne est transférée dans la fiche.

Voici les actions suivant le bouton utilisé :

1-Bouton SUPPRIMER, cette fonction n'est pas active
2-Bouton NOUVELLE, à utiliser pour créer une nouvelle fiche
3-Bouton AJOUTER, pour ajouter la nouvelle fiche créée
4-Bouton MODIFIER, pour modifier une fiche existante
5-Bouton CHOISIR, permet de transférer, dans le devis, la fiche sélectionnée
6-Bouton QUITTER, pour sortir de la zone fiche

le bouton SOS n'est pas actif, il affichera les infos de 1 à 6.

J'ai neutralisé la partie du code du post 0 et ça semble fonctionner, sauf ma fonction Modifier qui ne marche pas correctement. je cherche par des essais pour comprendre le pourquoi.

Cordialement
Messages postés
4612
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
11 décembre 2019
118
Re,

Si l'on clic sur une ligne, la ligne est transférée dans la fiche. 

Qu'appelle-tu "fiche" ? Le tableau de l'onglet Devis ? Quel intérêt ?
mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7
re,

fiche = tous les champs dans la zone mauve de l'UF
L'onglet Devis est la feuille devis ou toutes les informations seront stockées.
Aujourd'hui il n'y a que la zone du client choisie.

cordialement
mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7
Re,

j'ai fait toutes les modifs dans le code en supprimant la ComboBox2 puis en remplaçant certaine zones par la TextBox8.
ça fonctionne.

Merci pour ton aide

Cordialement
Messages postés
4612
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
11 décembre 2019
118
Re,

En pièce jointe ton fichier modifié comme si c'était pour moi. J'ai renommé les contrôles pour faciliter l'écriture du code. J'ai utilisé la propriété [Tag] pour renvoyer la valeur d'un contrôle dans la bonne colonne.
Tout fonctionne sauf SOS. J'ai laissé les messages (msgbox) de ton code mais je pense qu'il vont vite devenir pénibles pour les utilisateurs. Perso, je ne laisserai que celui de la suppression d'un contact...

http://www.cjoint.com/c/FDloBm2FxkI
mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7
Re,

Merci beaucoup, c'est super.
Je prends bonne note de ta remarque sur les messages.
Je vais passer ce code dans mon programme.

Un grand merci pour le temps que tu as consacré à mon application..

Bien cordialement,
mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7
Re bonjour, thautheme, Bonjour le forum,

J’ai supprimé la fonction SUPPRIMER où plutôt « gotouté » cette fonction, car dans le future je souhaiterais qu’il soit nécessaire d’avoirs un code d’accessibilité pour valider cette action.
De plus il ne faut pas pouvoir remplacer un fiche supprimée (en réalité pas supprimée) car il faudrait que toutes les fiches supprimée soient stockées dans un fichier archive et notée archivée et ne pas être visible ou plutôt être visible que sur demande donc peut-être restée dans le même fichier. Pas simple il me semble.
N’étant pas suffisamment compétant pour cette action aujourd’hui, je la laisse de coté.

Pour la fonction SOS j’ai rajouté les infos.

En ce qui concerne les messages, je les ai conservé car je n’utilise pas souvent la fonction donc il me semble important d’avoir ces informations. A l’utilisation je verrais s’il faut les supprimer.

J’ai ajouté un message entre la fiche et le tableau (sur l’UF), et une question me vient à l’esprit : est-il possible de faire clignoter cette affichage jusqu'à ce qu’il y ai une action de prise en compte où peut-être de clignoté toujours ????

Comme dans Word, arrière plan clignotant ou autre ???

Si tu as une solution, je suis client…


Voici le fichier : http://www.cjoint.com/c/FDluAXHTpUt

Merci encore pour avoir participé activement à l’avancement de mon code, de ton code.

Cordialement
Messages postés
4612
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
11 décembre 2019
118
Bonjour Mijean, bonjour le forum,

Dans la version 3 j'ai rajouté une onglet Supprimé qui va stocker toutes les fiches supprimées. Dans la cellule L1 de cet onglet il y a le mot de passe. La propriété [Visible] de cet onglet est égale à 2 - xlSheetVeryHidden et tu pourras même le protéger, avec le même mot de passe éventuellement. Pour supprimer une fiche, le mot de passe est demandé et 3 tentatives tolérées. À la dernière, j'ai juste fermer la procédure mais tu peux envisager plus violent, comme fermer le classeur par exemple... Si le code est bon, la ligne est supprimée de la base et stockée dans l'onglet Supprimé...

http://www.cjoint.com/c/FDmkxMfKzVI
mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7
Bonjour ThauTheme, bonjour le forum,

Merci encore pour cette intervention des plus efficace et qui répond complètement à ce que j'imaginé. vraiment lorsque l'on maitrise le code il faut juste bien structurer ces idées pour pouvoir aboutir.

Sur le même principe, il serait donc possible de pouvoir réintégrer une fiche dan la base initial, je suppose ?

Cordialement et respect pour le travail effectué aussi rapidement.
mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7
Re,

j'ai fait des essais avec la nouvelle fonction supprimer est ça marche bien sauf :

si l'on souhaite supprimer la dernière fiche créée, par exemple ???

Cordialement
Messages postés
4612
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
11 décembre 2019
118
Re,

Dans la V4 le problème est corrigé et j'ai rajouté une UserForm qui permet de supprimer définitivement des données de l'onglet Supprimé ou de les rapatrier (peut-être trouveras-tu un terme plus adapté...) dans la base de l'onglet Données Clients. Du coup, le numéro de fiche doit être unique et je le définis différemment. Voir la procédure du bouton Nouvelle...

http://www.cjoint.com/c/FDmnzgsOKfI
ThauTheme
Messages postés
4612
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
11 décembre 2019
118 > mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019

Re,

Pourtout la V4 fonctionne... Mets ton dernier fichier en pièce jointe...
ThauTheme
Messages postés
4612
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
11 décembre 2019
118
Tu dois sélectionner la ligne dans la ListBox1 avant ! D'ailleurs tu peux en sélectionner plusieurs pour les supprimer / rapatrier en une seule fois...
mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7 > ThauTheme
Messages postés
4612
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
11 décembre 2019

Re,

Non ce n'est pas dans mon fichier que je rencontre le pb, c'est bien sur la V4.

a) je débloque la feuille supprimée
b) je lance l'UF
c) je sélectionne la ligne au rapatrier
d) j'active le bouton rapatrier

et plouf :

Private Sub CommandButton2_Click() 'bouton Rapatrier

DC.Sort.SortFields.Clear


Je suis en Excel 2003 ! pour info.

Cordialement
ThauTheme
Messages postés
4612
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
11 décembre 2019
118 > mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019

Bonjour Mijean,

Oui c'est exact ! La méthode de tri a changé après la version 2003. Je vais rechercher le code pour 2003 et je te l'envoie...
Le voici :
Private Sub CommandButton2_Click() 'bouton Rapatrier
Dim I As Integer 'déclare la variable I (Incrément)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

If MsgBox("Ces données seront renvoyées dans la base client ! Voulez-vous continuer ?", vbYesNo, "ATTENTION") = vbNo Then Exit Sub 'si "Non" au message sort de la procédure
With Me.ListBox1 'prend en compte la ListBox1
    For I = .ListCount - 1 To 0 Step -1 'boucle inversée sur toutes les lignes I de la ListBox1
        If .Selected(I) = True Then 'si la ligne est sélectionnée,
            Set DEST = DC.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
            S.Rows(I + 2).Copy DEST 'copy la ligne I+2 dans DEST
            S.Rows(I + 2).Delete 'supprime la ligne I+2
        End If
    Next I 'prochaine ligne de la boucle
End With 'fin de la prise en compte de la Listbox1
'tri par numéro de fiche
DC.Range("A1").CurrentRegion.Sort Key1:=DC.Range("A1"), Order1:=xlAscending, Header:=xlYes
DC.Select 'sélectionne l'onglet DC (ou Devis si tu préfères)
S.Visible = xlSheetVeryHidden 'masque l'onglet S
Unload Me 'vide et ferme l'UserForm
End Sub


Ça devrait marcher avec Excel 2003...
mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7 > ThauTheme
Messages postés
4612
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
11 décembre 2019

Bonjour,

Merci pour ce code, ça marche effectivement très bien.
J'avais cherché depuis hier comment faire mais cela me semble hors de mes compétences actuellement.

Cordialement
Messages postés
4612
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
11 décembre 2019
118
Re,

j'ai modifié les codes !... Notamment j'ai remplacer la variable WS par DC pour avoir partout les mêmes variables. J'aurais dû les déclarer publiques dans un module standard pour éviter les confusions.

Il te faut soit utiliser le fichier que je t'ai proposé soit faire des copier/coller des codes de mon fichier au tien....
mijean94
Messages postés
341
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
7 novembre 2019
7
Re,

Merci, je vais regarder et faire les modifs dans mon fichier.

pour cela, je vais faire avec Word, copie des deux codes chacun dans une feuille, puis ouverture feuille avec ancien code et outil/comparaison et fusion de documents (la feuille avec le nouveau code), pour trouver toutes les modifs et les copier coller dans mon fichier.

Je ne sais pas si c'est la méthode la plus simple mais généralement je pratique comme cela.

je fais ça à la soirée.

Cordialement