Userform + bouton de modification

G

Gerard

Guest
Désolé de vous déranger pendant vos vacances. je travaille en ce moment sur la réalisation d'un petit programme sous vba pour rentrer une liste de clients.
je désire donc ajouter des personnes, pouvoir modifier la liste, et pouvoir supprimer des clients.
Tout marche sauf la modification de client existant, pourtant xl reconnait un changement mais il ne prend pas en compte mais modification de la userform.
Est il possible d'affecter une liste a une combobox sans passer par la fonction rowsource dans la fenetre des proprietes par exemple avec la fonction feuil1.range ...

Je ne comprends pas à quoi correspond la valeur de j:
dim j as integer
j=2 ' a quoi correspond cette donnée

j=j+1 ' idem!!

je vous joins l'esquisse du projet.

Je vous remercie d'avance pour votre aide

Gerard
 

Pièces jointes

  • clients6.xls
    37 KB · Affichages: 84
@

@+Thierry

Guest
Bonjour Gérard, le Forum

Sorry des délais pour te répondre mais avec l'été...

Donc aujourd'hui je suis tombé sur ta question, vieux motard que jamais !

Pour te répondre dans l'ordre, les "i = i + 1" et autres méthodes du même genre sont le B. A. BA pour construire des boucles....

Admettons, tu veux "éplucher" toutes les cellules comprises dans ton Tableau qui va de A1 à Axxx (on ne sait pas pour l'écrire en fixe) donc on va avoir besoin de :

un "i" qui sera "Integer" car on prévoit que tu peux avoir jusqu'à 32 767 lignes dans ton tableau (si Plus on passe en "Long")

un "L" qui sera aussi "Integer" car il va travailler de pair avec le "i"... car il va aller compter le nombre de ligne ("L" pour Ligne !)

Donc on va écrire comme suit les déclarations de Variable:

Sub Gerardiiiiii ()
Dim i As Integer
Dim L As Integer

Ensuite on va dire que L est la dernière Ligne NON-Vide en Partant du Bas (le bas, la dernière Ligne dans Excel est la 65536eme...)

L = Range("A65536").End(xlUp).Row

Donc "L" sait maintenant où est ta dernière entrée en colonne "A"...

Pour passer en reveue toutes les cellules je vais faire une Boucle comme ceci :

For i = 2 to L

Pourquoi 2 ?..... Parceque je pense que tu as une entête dans ton tableau qui ne va pas servir....

Donc on aprt de la Ligne 2 à la Dernière Ligne ("L").... (ok ?)

Ensuite rien de plus facile que de remplir un ComboBox

Private Sub UserForm_Initialize()
Dim i As Integer
Dim L As Integer

L = Range("A65536").End(xlUp).Row

For i = 2 to L
ComboBox1.AddItem Range("A" & i)
End With
Next i

End Sub

Donc à chaque passage de la boucle avec le Next "i" la Combobox avec le AddItem va recevoir la valeur de la cellule "A2", puis au tour suivant "A3" etc jusqu'à la Limite "L"... (ok ?)

Voilà Gérard à quoi servent ces 'i', "j", "x", "L", on peut y mettre tout l'alphabet !!!

Dans l'exemple ci-dessus il n'y a pas besoin d'incrémenter le "i" par i = i +1 car la boucle For "i" le fait d'elle même, mais je pourrais en avoir besoin dans d'autres cas de figures pour fair idem...

Je t'ai fait une démo complète en partant de ton propre fichier, mais étant donné l'ancienneté de ce fil de discussion je te donne rendez-vous dans un fil tout neuf vu que cette question revient en permanence sur ce Forum :

Lien supprimé

Bonne Soirée
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 896
Membres
103 404
dernier inscrit
sultan87