[VBA] L'indice n'appartient pas à la sélection

TheLio

XLDnaute Accro
Bonjour le forum, les xldiens, les xldiennes,

En pièce jointe vous trouverez des extraits de 2 fichiers "Tablo" qui représente une base de données et un fichier "Dossier_CFC"
Le but de la manip est de renseigner différentes cellules dans le classeur "Dossier_CFC" selon la BD du tablo
et de boucler dessus.
Je me suis inspiré de différents codes glânés sur le net, il y a peu cela fonctionnait, mais j'ai fait une boulette que je n'arrive pas à identifier.
Si... m'avait fourni une solution dans le fil suivant:
https://www.excel-downloads.com/thr...-selon-liste-et-renseigner-cellules.20000241/
Mais je ne peux pas utiliser sa solution car je suis obligé d'avoir deux classeurs bien distincts.

Merci d'avance pour vos lumières
@++
Lio
Edit: suis pas très doué en vba mes excuses ;-/
 

Pièces jointes

  • Tablo_Base.xlsm
    32.7 KB · Affichages: 48
  • Dossier_CFC.xlsx
    9.6 KB · Affichages: 49

Modeste

XLDnaute Barbatruc
Re : [VBA] L'indice n'appartient pas à la sélection

Salut Lio :)

Pas tout regardé, mais à 3 reprises dans ta Sub CreationFichierUnique(), tu fais référence à une "Sheets(2)" ... comme il n'y a qu'une seule feuille dans ton classeur, l'existence d'une seconde feuille semble peu probable!?
... Du coup on ne sait pas trop quelle valeur tu voudrais récupérer :confused:
 

TheLio

XLDnaute Accro
Re : [VBA] L'indice n'appartient pas à la sélection

Hey bonjour Modeste, :eek:
Effectivement, maintenant que tu le dis...
Il n'y a qu'une feuille pour l'instant, qui boucle sur toute la BD Sub CreationFichier()
le code Sub CreationFichierUnique() sera utilisé pour les numéros individuels a rajouter par la suite au coup par coup.
Ceci se fera via une feuile tierce

(en me relisant suis pas sûr d'être clair)

Lio
 

Modeste

XLDnaute Barbatruc
Re : [VBA] L'indice n'appartient pas à la sélection

Re,

Dans ta Sub CreationFichier(), il manque chaque fois des guillemets autour du nom de la feuille:
Sheets(Renseignements_élève).Range("D15").Value = ...

devrait s'écrire
Sheets("Renseignements_élève").Range("D15").Value = ...

Si tu as encore des erreurs, pense à préciser à quel moment/endroit

... Bon appétit si vous passez à table :)
 

TheLio

XLDnaute Accro
Re : [VBA] L'indice n'appartient pas à la sélection

Bonjour le forum,
Bonjour Modeste,
Je te remercie pour ton coup de pouce d'hier et mes sincères excuses pour le manque de précision.
Maintenant, c'est sur la macro Sub CreationFichierUnique() que je croche, j'ai fait un peu de cosmétique sur le classeur et je n'arrive plus à récupérer le N° unique, il me prend la barre de titre...
Voilà ce que ça fait quand un petit formuliste du dimanche comme moi s'attaque au vba :(

Je n'ai pas joint le fichier à copier mais un simple classeur vide nommé BBBB_Base_élève_AFP devrait faire l'affaire

Avec mes meilleures salutations Lio
 

Pièces jointes

  • xld_base.xlsm
    41.3 KB · Affichages: 47
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : [VBA] L'indice n'appartient pas à la sélection

Salut Lionel,

J'ai les mêmes interrogations qu'hier ... Cette fois, il y a bien une seconde feuille :D ... Mais
  • que devrait "ramener" a = Sheets(2).Cells(6, 6) :confused: sachant que F6 en feuille "BD_élèves" est dramatiquement vide :) Ceci dit, comme tu ne sembles pas utiliser cette variable par la suite, on pourrait dire que ce n'est pas trop grave!?
  • une dizaine de lignes plus bas, tu as Selection.Find(What:=Sheets(2).Cells(6, 4) ... ... ici, tu "pointes" sur la cellule D6 de la feuille BD_élèves
  • précisément au sujet de cette Selection, il y a un autre souci: tu écris Sheets("BD_Eleves").Select et juste après Sheets(1).Select ... la seconde instruction annule les effets de la première

Je présume que c'est le contenu des deux mêmes cellules (F6 et D6), mais en feuille "Tableau_de_bord" qui t'intéressent et que tu cherches la position de D6 en colonne B de la feuille BD_élèves. Si c'est bien de cela qu'il s'agit,
  • supprime les 2 Select repris ci-dessus
  • écris simplement
    VB:
    Set trouve = Sheets("BD_Eleves").Columns("B:B").Find(What:=Sheets(1).Cells(6, 4), LookIn:=xlValues, LookAt:=xlPart, MatchCase:=False, SearchFormat:=False)
  • à la ligne suivante
    VB:
    If Not trouve Is Nothing Then LigneDepartUnique = trouve.Row
    affectera à LigneDépartUnique le n° de ligne concerné en colonne B (si le n° élève a été trouvé ... restera à gérer le cas contraire, éventuellement)

... Tu me suis??
 
Dernière édition:

TheLio

XLDnaute Accro
Re : [VBA] L'indice n'appartient pas à la sélection

Bonjour Modeste,
Merci pour la clarté de tes précisions
Je comprends ma boulette, c'est en créant une deuxième page qui intervient sur la première que mon code a planté.

Mais je n'arrive pas à mettre en place ton code,
J'ai erreur de compilation "caractère incorrect" en voulant supprimer l'espace qui me semble être de trop c'est "attendu paramètre nommé qui vient ---
SUis bien largué
 

Modeste

XLDnaute Barbatruc
Re : [VBA] L'indice n'appartient pas à la sélection

Re,

Désolé, pas vu que des balises étaient venues s'insérer dans le bout de code!

VB:
Set trouve = Sheets("BD_Eleves").Columns("B:B").Find(What:=Sheets(1).Cells(6, 4), LookIn:=xlValues, _
LookAt:=xlPart, MatchCase:=False, SearchFormat:=False)

Edit idem dans l'autre instruction: supprime le [*] qui s'est invité en fin de ligne
 

Modeste

XLDnaute Barbatruc
Re : [VBA] L'indice n'appartient pas à la sélection

Re,

Dans ta procédure Créationfichierunique, juste après Application.screenUpdating=false

Ça devient donc:
VB:
Application.ScreenUpdating = False
Set trouve = Sheets("BD_Eleves").Columns("B:B").Find(What:=Sheets(1).Cells(6, 4), LookIn:=xlValues, _
        LookAt:=xlPart, MatchCase:=False, SearchFormat:=False)
If Not trouve Is Nothing Then LigneDepartUnique = trouve.Row
Sheets(1).Select 'sans doute pas utile
Range("A1").Select 'idem

Call CreationFichier
LigneDepartUnique = 0
Application.ScreenUpdating = True
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin