Débutant VB

Résolu
ViMx Messages postés 10 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 4 mai 2006 - 26 avril 2006 à 23:54
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 !

16 réponses

michelxld Messages postés 402 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 12 octobre 2008 32
27 avril 2006 à 05:43
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
3
michelxld Messages postés 402 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 12 octobre 2008 32
27 avril 2006 à 18:05
bonjour

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

remplace

Dim Ligne As Integer

 par

Dim Ligne As Long

bonne soiree
michel
3
Alboure Messages postés 42 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 21 juin 2006
2 mai 2006 à 11:32
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
3
Alboure Messages postés 42 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 21 juin 2006
4 mai 2006 à 17:31
Bonjour

Essaye plutôt ca:

Private Sub Bouton1_click()

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

End Sub

Alboure
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alboure Messages postés 42 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 21 juin 2006
4 mai 2006 à 22:43
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
3
ViMx Messages postés 10 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 4 mai 2006
27 avril 2006 à 08:02
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 !
0
ViMx Messages postés 10 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 4 mai 2006
27 avril 2006 à 10:48
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 ...
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
27 avril 2006 à 12:27
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
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
27 avril 2006 à 12:44
ci après liens pour ces projets : http://www.vbfrance.com/code.aspx?ID=37277

Chris...
Web : Firstruner
0
ViMx Messages postés 10 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 4 mai 2006
27 avril 2006 à 15:11
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 !
0
ViMx Messages postés 10 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 4 mai 2006
27 avril 2006 à 15:27
C'est très bizarre, maintenant ca fonctionne, mais pas pour tous mes formulaires

Enfin bon, je vais bien trouver le secret
0
ViMx Messages postés 10 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 4 mai 2006
4 mai 2006 à 12:04
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 ?
0
ViMx Messages postés 10 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 4 mai 2006
4 mai 2006 à 16:32
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 !
0
ViMx Messages postés 10 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 4 mai 2006
4 mai 2006 à 19:24
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 !
0
ViMx Messages postés 10 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 4 mai 2006
4 mai 2006 à 21:52
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 !
0
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
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 +
0
Rejoignez-nous