Résolu (NOVICE) Besoin d'aide projet Vidéothèque avec VBA

  • Auteur de la discussion Benj50
  • Date de début

Benj50

Nouveau membre
Bonjour tout le monde !

Alors voilà je suis nouveau ici et j'essai de réaliser une vidéothèque sous excel. Donc alors voilà vous aller peut être trouver ça bizarre d'utiliser le VBA pour ça mais j'ai envie d'apprendre (Je suis un grand débutant...). Afin d'apprendre sur un projet concret et utile pour moi je me suis lancé dans la réalisation de cette vidéothèque.

Voilà comment je l'ai pensé :

1 Première feuille appelée "Recherche" ou je chercherai a réaliser des recherches en fonction du nom, du genre, ou de mots clefs. (En dernier lieu)

1 Seconde feuille appelée "Traitement" qui me servira a ajouter les films. Pour celle ci j'ai songé a 4 colonnes : Nom, Date de sortie, Genre, synopsis. En gros j'ai pensé a faire un bouton lié a une macro qui permettra de déplacer les données saisies sur la ligne suivant les titres des colonnes vers la page associée en fonction de la première lettre du film (a voir après).

27 autres pages : une par lettre et la dernière pour les films de type "300". Elles accueilleront les les films saisis dans la feuille "Traitement".

Mais voilà j'ai fouiné sur beaucoup de topic et je ne comprend pas tout vu mon statut de "novice", je galère notament sur la première étape a savoir la declaration des variables. C'est un peu abstrait pour moi et je ne sais quoi déclarer...
J'espère qu'une âme charitable voudra bien passer un peu de temps avec moi pour m'expliquer et me dénoobifier.

Merci d'avance ! :)
 

AccroPC2

Fou du PC
Staff
Meilleure réponse
Bonjour,

Je ne suis pas un grand expert VBA même si j'en ai fait, je ne vais pas t'aider sur cette partie. Par contre avant de commencer le code, il faut définir ton modèle de données. Définir les écrans, les données nécessaires, les flux à partir de là 90% de code se déduit directement.

J'en profite également, Excel ne semble pas très adapté, Access ou MySQL pour stocker tes données semblent bien plus approprié.

Bon courage
 

Benj50

Nouveau membre
Salut AccroPC2,

Merci à toi de m'avoir répondu ! :)
Du coup tout ce qui touche a la "définition" ce fait par le biais des déclarations de variables ?
Enfin j'ai investi dans un livre assez imposant je vais essayer de potasser tout ça.
Le truc c'est que j'ai quelques notions de SQL mais j'aimerai vraiment apprendre a bien utiliser le VBA sur excel parce que excel reste le must des log au niveau professionnel et industriel. Etant dans la logistique c'est un outil que j'aimerai bien savoir utiliser a fond, ou du moins plus que la majorité des gens.

Je vais clore le sujet et reviendrai après avoir jeté un œil sur le bouquin. ;)

Merci ! :)
 

zeb

Modérateur
Plop,

Je plussoie l'avis d'AccroPC2 !
Quant à ton envie de montée en compétence, Benj, elle est tout à fait honorable.

Access utilise aussi le VBA. Ce projet de vidéothèque est un bon support pour découvrir Access et le VBA.
Quand tu auras de bonnes notions en VBA/Access, tu sauras 90% de ce qu'il faut savoir pour maîtriser VBA/Excel.

Et la logistiques est un domaine où avoir de bonnes bases en base (de données) est un plus, j'en suis sûr.
 

Benj50

Nouveau membre
Salut zeb,

Merci pour ta réponse, j'ai suivi vos conseils en allant un peu sur access mais c'est pas vraiment mon élément ce logiciel et je suis pas mal perdu dessus. Alors j'ai tenté des trucs sur excel mais c'est pas très fructueux...
J'ai essayé de faire en sorte de couper les cellules ou je rentrerai les données liées aux films que je voudrai ajouter à ma liste de films et de les mettre sur une feuille a coté qui les contiendra tous.

Donc j'ai pondu ce genre de truc :
Code:
Sub AjoutDunFilm()
'Déclaration des variables
Dim Traitement As Worksheet
Dim ListeDefilms As Worksheet
Set Traitement = Sheets("Feuil2")
Set ListeDefilms = Sheets("Feuil3")
Dim NouveauFilm As String
NouveauFilm = Range("B3:F3")
'Procedons au découpage des données
'Selection des cellules a couper a savoir celles du nouveau film
Worksheets("Traitement").Range(NouveauFilm).Select
    Selection.Cut
Sheets("ListeDeFilms").Activate
    Range("A2").PasteSpecial Paste:=xlPasteValues
End Sub

Mais ça ne marche pas malheureusement... Est ce que vous pourriez me dire pourquoi...? :/
 

AccroPC2

Fou du PC
Staff
Bonjour,

Couper / coller un sélection peut se faire comme cela :

Sub Selection()
'Coupe et colle cellules A1àC1 de la feuille Films sur la feuille Feuil2
Sheets("Films").Activate
Range("A1:C1").Cut
Sheets("Feuil2").Activate
Range("A1:C1").Select
ActiveSheet.Paste

End Sub

Mais je ne suis pas sûr d'avoir compris ton besoin
 

zeb

Modérateur
Ah ça, AccroPC2, tu n'es pas un grand expert !
Ni en VBA, ni en Windows, ni en forum [:zeb:4]

Concernant le forum, il y a un règlement qui stipule que nous devons présenter le code entre les balises [code] et [/code].

Pour Windows, un programme ne doit pas se servir du presse-papier comme d'une variable temporaire !

Quant au VBA, si ton code n'est pas très beau, sache que l'enregistreur de macro ne fait pas mieux ;)

Voici une version qui prend effectivement la sélection et qui la coupe vers la feuille 2, sans rien activer, ni sélectionner, ni présumer de la taille de ce qu'il y a à copier.
Code:
Sub CopierLaSelection()
    Selection.Cut Destination:=WorksheetSheets("Feuil2").Range("A1")
End Sub

-----------------------------------

Bon, Benj.
On arrête avec tes histoires d'Access et de pro et toussa voila.

Et on reprend sur des bases saines :

T'es un gros nioub en VBA/Excel, et tu voudrais ne plus l'être.
Pour ce faire, tu proposes de te faire les dents avec cet exemple de gestion de films.

Ok !

Alors d'abord, je ne veux(*) plus voir de Select ou d'Activate, sauf si c'est pour sélectionner une zone ou activer une feuille.


Bon, alors cette feuille traitement a ses quatre colonnes pleines de données.

On veut :
les parcourir une à une
pour chacune, on regarde le titre et la première lettre.
Dans la bonne feuille de destination, on regarde si le film existe déjà.
Oui ? au choix : rien à faire / écraser / alerter / etc.
Non ? On inscrit dans la feuille de destination les informations de la feuille de traitement

A la fin, on supprime toutes les lignes.

Facile !
(pour moi. mais tu vas voir, bientôt pour toi aussi)

Pour parcourir toutes les lignes, on va déterminer la zone où les données sont inscrites.
Admettons que ça commence à la ligne 2, dans les colonnes A, B, C et D, et qu'il n'y a pas de ligne vide :

Code:
Dim feuil_traitement As Worksheet
Set feuil_traitement = Worksheets("TRAITEMENT")
Dim ligne As Range
Set ligne = feuil_traitement.Rows(2)

Do While Trim(ligne.Cells(1).Value) <> ""

  MsgBox "je suis la ligne n°" & CStr(ligne.Row)

  Set ligne = ligne.Offset(1)
Loop

Bon, ce message est agaçant, mais c'est pour voir comment ça marche...

On va regarder le titre maintenant.
Pour la ligne ligne, c'est dans la cellule 1.
Et l'initiale, c'est la plus à gauche des lettres :
Code:
Left(ligne.Cells(1),1)
Ok ? Alors on continue.

La feuille où il faut chercher ?
C'est là, bien sûr :
Code:
Dim feuil_destination As Worksheet
If (Left(ligne.Cells(1),1) >= "A") And (Left(ligne.Cells(1),1) <= "Z")  Then
    Set feuil_destination = Worksheets(Upper(Left(ligne.Cells(1),1)))
Else
    Set feuil_destination = Worksheets("0")
End If

Je te laisse chercher si le film existe déjà...

Si la description du film n'existe pas encore, on la recopie.
Où ? A la première ligne vide de la feuille de destination.
Je te laisse chercher un peu (il y a des exemples TRES bien faits sur le site ;) )

Et à la fin on vide la feuille de traitement.

Voyons maintenant ce que tu vas faire de tout ça.
:D
(donne ici ton code, je t'aiderai à le corriger et à l'améliorer.)


_____________________
(*) en fait tu fais bien ce que tu veux, mais bon, je suis là pour te faire progresser.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 055
Membres
1 586 282
Dernier membre
Yannick3553
Partager cette page
Haut