Débutant VB [Résolu]

Messages postés
10
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
4 mai 2006
- - Dernière réponse : ViMx
Messages postés
10
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
4 mai 2006
- 4 mai 2006 à 23:36
Salut, et déjà merci aux personnes qui me lisent !

Alors voilà, je suis en école de commerce, et dans le cadre d'un projet en informatique, je dois développer un petit logiciel avec l'aide d'Excel et VB.

J'ai donc choisis de développer un logiciel de gestion de salle de cinéma ... mais j'ai plusieurs soucis :

D'abord, j'ai réussit à transférer des infos saisies dans un userform dans une ligne de feuille excel, cependantà chaque fois que je dais la manip, il recopie les nouvelles infos sur les anciennes, donc on garde rien, je voudrais simplement, qu'il passe à la ligne lors d'une nouvelle entrée.

Voilà mon code actuel :

'Enregistrer la programmation du film'
Private Sub CommandButton1_Click()
Sheets("plan").Select
i = 10
Dim ligne As String
ligne = 9
Range("A2").Select

While ActiveCell.Text <> ""
ligne = i
Range("A" + ligne).Select
i = i + 1
Wend

Range("A2").Select
ActiveCell.Value = list_films
ActiveCell.Offset(0, 1) = bx_genre
ActiveCell.Offset(0, 2) = bx_duree
ActiveCell.Offset(0, 3) = bx_obs
ActiveCell.Offset(0, 4) = num_salle
ActiveCell.Offset(0, 5) = ComboBox1
ActiveCell.Offset(0, 6) = ComboBox2
film.Hide
Unload film
RepAff = MsgBox("Séance programmée avec succès.", _
vbOKOnly + vbQuestion, "Programmaion séance")
RepAff = MsgBox("Voulez-vous programmer une autre séance ?", _
vbYesNo + vbQuestion, "Programmer une autre séance ?")
If RepAff = vbYes Then
film.Show
End If
End Sub

Sinon, je voulais savoir comment pouvions nous faire pour suprimmer le contenu d'une ligne de la feuille, à partir d'une entrée du UserForm

(En fait, ce sont des abonnés qui sont inscrits, et j'aimerais ajouter la fonction "Supprimer" l'abonné dans mon projet.)

Voilà, j'aurais surement d'autres question, mais ce sont les principales ...

D'habitude, j'arrive à trouver des réponses en parcourant le web et en trouvant des bouts de code, mais là, ca coince !

Merci d'avance pour votre aide !
Afficher la suite 

16 réponses

Meilleure réponse
Messages postés
402
Date d'inscription
vendredi 6 août 2004
Statut
Membre
Dernière intervention
12 octobre 2008
16
3
Merci
bonjour

j'espere que cette adaptation pourra t'aider

Private Sub CommandButton1_Click()
Dim Ws As Worksheet
Dim Ligne As Integer


Set Ws = Sheets("plan")
Ligne = Ws.Range("A2").End(xlDown).Row + 1


Ws.Cells(Ligne, 1) = list_films
Ws.Cells(Ligne, 2) = bx_genre
Ws.Cells(Ligne, 3) = bx_duree
Ws.Cells(Ligne, 4) = bx_obs
Ws.Cells(Ligne, 5) = num_salle
Ws.Cells(Ligne, 6) = ComboBox1
Ws.Cells(Ligne, 7) = ComboBox2


Unload film


RepAff = MsgBox("Séance programmée avec succès.", _
vbOKOnly + vbQuestion, "Programmaion séance")
RepAff = MsgBox("Voulez-vous programmer une autre séance ?", _
vbYesNo + vbQuestion, "Programmer une autre séance ?")


If RepAff = vbYes Then film.Show
End Sub






et pour supprimer une ligne dans la base de données

Private Sub CommandButton2_Click()
Dim Ws As Worksheet
Dim Ligne As Integer
Dim Plage As Range
Dim Cible As String
Dim x As Integer


Set Ws = Sheets("plan")
Ligne = Ws.Range("A2").End(xlDown).Row + 1
Set Plage = Ws.Range("A2:A" & Ligne)


Cible = InputBox("Entrez le nom à supprimer : ")
If Cible = "" Then Exit Sub
 
On Error Resume Next
x = Application.Match("*" & Cible & "*", Plage, 0)
 
If x = 0 Then
MsgBox "Le nom : " & Cible & " , n'existe pas dans la base ."
Exit Sub
End If


Ws.Rows(x + 1).Delete
End Sub

bonne journée
michel

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 190 internautes nous ont dit merci ce mois-ci

Messages postés
402
Date d'inscription
vendredi 6 août 2004
Statut
Membre
Dernière intervention
12 octobre 2008
16
3
Merci
bonjour

cela depend du nombre de lignes dans la feuille "plan"

remplace

Dim Ligne As Integer

 par

Dim Ligne As Long

bonne soiree
michel

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 190 internautes nous ont dit merci ce mois-ci

Messages postés
42
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
21 juin 2006
3
Merci
Il faut effectivement remplacer integer par long, mais il y a un autre problème:

Ws.Range("A2").End(xlDown).Row + 1 n'ira à la première ligne occupée que si A3 n'est pas vide, sinon il ira jusqu'à 65536.
Il faut donc faire:

if Ws.Range("A3") <> "" then
   Ligne = Ws.Range("A2").End(xlDown).Row + 1
else
   Ligne = 3
endif

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 190 internautes nous ont dit merci ce mois-ci

Messages postés
42
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
21 juin 2006
3
Merci
Bonjour

Essaye plutôt ca:

Private Sub Bouton1_click()

With UserForm
.combobox1 = "Salut"
.combobox2 = "Coucou"
.Textbox1 = Range("A2")
.Show
end With

End Sub

Alboure

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 190 internautes nous ont dit merci ce mois-ci

Messages postés
42
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
21 juin 2006
3
Merci
Si c'est juste pour afficher sans modifier, tu peux utiliser une listbox :

par exemple tu fais si tu veux voir le contenu de la plage A1:B3

Listbox1.RowSource = "=A1:B3" 'En mettant la propriété ColumCount à 2

apres si tu veux modifier le contenu, t'as qu'a faire en sorte de mettre les données de la ligne que tu as sélectionné dans des textbox dans un autre formulaire, après si quelqu'un a quelque chose de plus rapide je suis aussi preneur.

Alboure

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 190 internautes nous ont dit merci ce mois-ci

Messages postés
10
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
4 mai 2006
0
Merci
Merci beaucoup pour ta réponse !

Alors pour la première solution, il me met une erreur d'execution 6 : Dépassement de capacité. Ca doit pas être grand chose vu que j'ai eu cette même erreur avec ta solution pour mon second probkème, qui marche très bien !

Merci beaucoup en tout cas !

PS: l'erreur est à la ligne:

Ligne = Ws.Range("A2").End(xlDown).Row + 1

Je continue à chercher le pourquoi du problème !
Messages postés
10
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
4 mai 2006
0
Merci
Salut, me revoilà, et j'ai toujours pas régler mon problème de la ligne

Ligne = Ws.Range("A2").End(xlDown).Row + 1

Et je ne comprends pas pourquoi

Je pense que c'est à cause du positionnement de l'activcell ...
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
11
0
Merci
Salut,

une idée simple : utiliser une base Access, ou un format XML pour charger les données pour stocké tes données.
Ou aussi simplement enregistrer à un endrois le numéro de la dernière ligne.

J'ai déjà l'exemple de projet pour Access pour la gestion de 4 magasins, et le projet aussi pour la gestion XML si tu le désire.

Chris...
Web : Firstruner
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
11
0
Merci
ci après liens pour ces projets : http://www.vbfrance.com/code.aspx?ID=37277

Chris...
Web : Firstruner
Messages postés
10
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
4 mai 2006
0
Merci
Salut cboulas, merci pour ta réponse, mais je préfererai rester sur une base de données Excel, je me rends bien compte que c'est pas l'idéal, mais j'ai pas du tout le temps de changer tout ça ...

J'ai quelques précisions pour mon problème : Apparement c'est le End(xlDown) qui déconne ... quand je l'enlève, ca fonctionne mais evidemment, il me rentre les infos collectées sur les anciennes infos !

Je continue mon investigation !
Messages postés
10
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
4 mai 2006
0
Merci
C'est très bizarre, maintenant ca fonctionne, mais pas pour tous mes formulaires

Enfin bon, je vais bien trouver le secret
Messages postés
10
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
4 mai 2006
0
Merci
Merci beaucoup pour vos réponses ! J'ai réglé tous mes soucis sauf un :

Est il possible de "pré-remplir" un formulaire ? Je m'explique :

J'ai un seul UserForm mais qui est "variable" en fonction du bouton sur lequel on clique, il y ait tel ou tel contenu déja renseigné dans le userform qui s'ouvre avec ce bouton.

Je pensais à un truc du genre:

Private Sub Bouton1_click()
combobox1 = "Salut"
combobox2 = "Coucou"
Textbox1 = Range("A2")
UserForm.Show
End Sub

Mais evidemment, ca ne marche pas !

Une idée ?
Messages postés
10
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
4 mai 2006
0
Merci
Peut être que vous ne me comprenez pas ...

En fait j'ai 20 boutons qui pointent vers le même UserForm, mais j'aimerai que en fonction du bouton sur lequel je clique, le UserForm soit déjà remplit avec des infos précises !

Je pensais à une combinaison de If et de Then, mais c'est lourd, et en plus, j'ai toujours le même problème: je ne sais pas où placer le code !

Merci d'avance !
Messages postés
10
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
4 mai 2006
0
Merci
Nikel !

Ca marche, il suffit d'avoir la bonne syntaxe !

Dernier problème:

Est il possible d'afficher une feuille excel (ou du moins une range de cellules) dans un UserForm ?

Ou sinon, quelqu'un connaiterait il un moyen d'afficher en apercu une feuille excel en cliquant sur le bouton d'un userform ?

Merci !
Messages postés
10
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
4 mai 2006
0
Merci
Pfffff j'ai éssayé d'utiliser la camera pour faire une macro (pour passer en mode apercu) mais je dois pas être très doué: j'ai pas réussit !
Messages postés
10
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
4 mai 2006
0
Merci
Merci de me répondre !

Je ne cherche pas à changer le contenu (juste de la consultation) donc ta solution me va très bien !

Bonne chance pour tes recherches !

a +