Premier post : déplacer le contenu d'une cellule

Sogeri

XLDnaute Nouveau
Bonjour à toutes et à tous :)

Première sollicitation, il y en aura certainement d'autres puisque j'utilise énormément Excel (2013) comme base de données et planches de calculs (horaires, dates, cours des changes...) , bien que n'ayant aucune formation donc grosses difficultés avec mathématiques ou écriture en VBA, pour cause de filière littéraire et linguistique. Mais je reste très logique et déductif, de façon empirique, ie. par l'exemple.

J'ai récupéré la base de données de la Cinémathèque Française, presque 24.000 entrées, dispo en public :
http://www.cineressources.net/repertoires/repertoire.php?repertoire=VIDEO2

Transférée sous Excel (PJ)
J'ai ajouté une colonne à gauche (col. A) pour déplacer les noms des auteurs, qui sont hélas empilés avec les titres des films (col. B), de façon à faire des sélections, tris et filtrages par noms, années...
Jusque là, je fais tout à la main, ca prend des lustres et c'est fastidieux...

Ma sollicitation de conseils, donc. J'ai essayé de trouver tout seul, mais ca fait trois semaines que je patauge, je me résous à copier par dessus l'épaule des mes voisins :)

1- Je me demande si une macro me permettrait de déplacer les noms des auteurs, ligne en dessous case à gauche (de 1B vers 2A), en sélectionnant une (ou plusieurs) cellule
2- Puis une nouvelle macro pour supprimer les lignes laissées vides entre deux entrées en col. B (avec les titres, c'est important !)
3- Puis quand il n'y a plus de ligne vide, tirer avec une macro le nom de l'auteur en col. A jusqu'à la dernière des cases vides qui se trouve en dessous.

- Est-il possible d'appliquer une macro sur une sélection multiple de cellules (avec touche CTRL + clic) ?

Ensuite, je distingue sur deux cellules le titre et l'année, séparés par un tiret " - ", mais ca c'est facile, y compris concaténer lorsqu'il y a un tiret au milieu du titre :)

J'ai juste besoin du libellé des macros pour les 3 points ci-dessus, ca doit pas être trop compliqué, mais comme je suis un profane complet, qui plus est à la retraite...

Après je creuserai pour savoir comment l'installer et l'appliquer. Faut bien que j'apprenne, depuis que j'ai commencé sur Excel 5 après Lotus 1-2-3 et Quattro Pro, et appris le transfert de fichiers Excel (.XL) sous Access ou autres dans les années 90, avec des patchs glanés sur internet...

Ca fait déjà plusieurs questions, merci à vous de prendre la peine sur votre temps.
Pour pas me noyer, pouvez-vous s'il vous plait copier-coller ma question au dessus de votre réponse ?
J'ai fait une recherche sur le site, mais c'est pas fructueux et je ne suis pas remonté à la Création...

Dernière indication et non des moindres : je suis bavard.

En vous souhaitant un prochain déconfinement très ensoleillé :)

Bien cordialement,
Sogeri

Cinémathèque.jpg
 

soan

XLDnaute Barbatruc
Bonjour Sogeri,

Si tu envoies un fichier exemple Excel plutôt qu'une image, j'essayerai
de voir si je peux faire quelque chose (attention : ce n'est pas sûr !)

J'avais commencé avec Excel 5.0b ; j'avais fait aussi un peu Lotus 1-2-3
(mais j'ai tout oublié) ;
et je connais un peu Access ; j'avais aussi fait du Basic et du Turbo Pascal (de Borland).


soan
 
Dernière édition:

soan

XLDnaute Barbatruc
Bonjour Sogeri,

voici ton fichier modifié.

avant : n° dernière ligne : 19933 ; j'ai supprimé 62 lignes vides
➯ maint'nant : n° dernière ligne : 19871 :)

les années sont toutes en colonne C ; certaines lignes n'avaient pas d'année,
donc sur la ligne correspondante, c'est resté vide en colonne C.

bien sûr, il n'y a plus aucune année en colonne B.

n'oublie pas ta ligne jaune9226. :p

il te reste à compléter avec les années manquantes, et aussi les auteurs inconnus :
j'pourrais rechercher ces infos manquantes sur le net, mais ça, c'est ton job ! ;)

bon courage ! :D


soan
 

Pièces jointes

  • Cinémathèque Avril 2020.xlsx
    637.7 KB · Affichages: 3

soan

XLDnaute Barbatruc
Bonjour @Sogeri,

en fait, je n'ai pas fait tout le travail manuellement, tu penses bien ! ;) :p
ça aurait été bien trop long et fastidieux !!! j'avais converti ton fichier .xlsx
en .xlsm, puis j'avais utilisé 2 macros :

* la macro DelEmptyLigs() pour supprimer les lignes vides ; note que dlg,
n° dernière ligne utilisée est : 19933, et la boucle For lig est de bas en haut.

VB:
Option Explicit

Const dlg& = 19933

Sub DelEmptyLigs()
  Dim lig&: Application.ScreenUpdating = 0
  For lig = dlg To 10168 Step -1
    With Cells(lig, 1)
      If .Value = "" And .Offset(, 1) = "" And .Offset(, 2) = "" Then Rows(lig).Delete
    End With
  Next lig
End Sub
après exécution : n° dernière ligne utilisée = 19871 (donc 62 lignes en moins)

* la macro Année() pour mettre l'année en colonne C, puis la supprimer de la colonne B ;
attention : note bien que pour dlg, j'ai changé 19933 en 19871 ! eh oui, vu qu'il y a eu
62 lignes en moins ! donc surtout, ne pas oublier d'ajuster dlg après exécution de la
1ère macro ! remarque, si tu oublies, c'est pas catastrophique : simplement, ça exécutera
inutilement la boucle
For lig sur des lignes supplémentaires vides (sous la dernière ligne
utilisée réelle) ; enfin, note que cette fois, la boucle
For lig est de haut en bas.

VB:
Option Explicit

Const dlg& = 19871

Sub Année()
  Dim chn$, lig&, p As Byte: Application.ScreenUpdating = 0
  For lig = 10168 To dlg
    With Cells(lig, 2)
      chn = .Value: p = InStrRev(chn, " - ")
      If p > 0 Then
        .Offset(, 1) = Val(Right$(chn, 4))
        .Value = Left$(chn, p - 1)
      End If
    End With
  Next lig
End Sub
note bien l'utilisation de Val(), pour que l'année texte (alignée à gauche) soit convertie en année nombre
(alignée à droite) ; on sait jamais, des fois que tu aurais besoin de faire des calculs sur l'année ; encore
que, pour certains cas, il peut y avoir conversion automatique implicite ; si tu n'as pas besoin d'faire
de calculs sur l'année, tu peux enlever Val() et mettre plus simplement : .Offset(, 1) = Right$(chn, 4) ;
l'année texte étant alignée à gauche, il te suffit de mettre à la place un alignement à droite ; autant
ne pas le faire dans la macro Année(), et le faire directement sur la feuille, pour toute la colonne C
(sauf pour l'en-tête C1 "Année").

ensuite, j'avais converti le .xlsm en .xlsx ! :D (et le tour est joué : ni vu, ni connu ! :rolleyes:)

j'préfère t'indiquer ces 2 macros au cas où un jour t'en aurais besoin pour un autre fichier récupéré
à partir de la base de données de la Cinémathèque Française (également disponible au public) ;
et comme les 2 macros sont maint'nant dans ce post, ça m'évitera d'refaire le même travail si
plus tard tu m'demandes le même job pour un autre fichier.

si kek'chose n'est pas clair, et qu't'as besoin d'un complément d'infos,
n'hésite pas à m'demander : le SAV est garanti ! :p ;)


soan
 
Dernière édition:
Haut Bas