Compléter lignes depuis autre classeur (base de données ?)
Résolu/Fermé
Nai
Messages postés
711
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
25 août 2023
-
12 août 2014 à 11:25
Nai Messages postés 711 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 25 août 2023 - 15 oct. 2014 à 13:03
Nai Messages postés 711 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 25 août 2023 - 15 oct. 2014 à 13:03
A voir également:
- Compléter lignes depuis autre classeur (base de données ?)
- Formules excel de base - Guide
- Célia doit nettoyer le tableau ci-dessous pour l’ajouter à la base de données de son entreprise. les données sont ensuite traitées automatiquement. quelles sont les 4 cellules qui risquent de poser problème ? ✓ - Forum Excel
- Exemple base de données access à télécharger gratuit ✓ - Forum Logiciels
- Désolé l'utilisation de la base de données a expiré epic games - Forum Jeux vidéo
- Effacer les données de navigation - Guide
16 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 743
12 août 2014 à 12:53
12 août 2014 à 12:53
Bonjour,
La base de donnée est elle ouverte lors de la saisie dans l'autre classeur ?
Ou souhaitez vous qu'apparaisse la liste de saisie semi-automatique? Dans une ListBox?
La base de donnée est elle ouverte lors de la saisie dans l'autre classeur ?
Ou souhaitez vous qu'apparaisse la liste de saisie semi-automatique? Dans une ListBox?
Nai
Messages postés
711
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
25 août 2023
54
12 août 2014 à 13:21
12 août 2014 à 13:21
La base de données n'est pas forcément ouverte. Une ListBox, c'est pas mal je pense. Cela évite-t-il d'avoir à ouvrir le classeur manuellement ?
Evi, désolé mais je n'ai pas compris :$
Evi, désolé mais je n'ai pas compris :$
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 743
12 août 2014 à 13:33
12 août 2014 à 13:33
Voici la première version de ton fichier feuille de présence.
Le code de la macro est accessible depuis le module de la feuille "feuille de présence".
Il nécessite, dans la feuille, deux contrôles :
1 textbox
1 listbox
Pour tester, ouvre les deux classeurs, vérifie que le nom du classeur base_de_donnee.xlsx est le même que celui indiqué dans la macro à cette ligne :
With Workbooks("base_de_donnee.xlsx").Sheets("Feuil1")
Si tout ok, essaie une saisie dans le textbox.
La base de données n'est pas forcément ouverte
Dans le code donné ici, il faut qu'elle le soit. Si cela ne te convient pas, dis le.
Le code de la macro est accessible depuis le module de la feuille "feuille de présence".
Il nécessite, dans la feuille, deux contrôles :
1 textbox
1 listbox
Pour tester, ouvre les deux classeurs, vérifie que le nom du classeur base_de_donnee.xlsx est le même que celui indiqué dans la macro à cette ligne :
With Workbooks("base_de_donnee.xlsx").Sheets("Feuil1")
Si tout ok, essaie une saisie dans le textbox.
La base de données n'est pas forcément ouverte
Dans le code donné ici, il faut qu'elle le soit. Si cela ne te convient pas, dis le.
Nai
Messages postés
711
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
25 août 2023
54
12 août 2014 à 14:00
12 août 2014 à 14:00
Merci pijaku pour ta rapidité !
Ca fonctionne, mais pas partout.
Si je souhaite ajouter une personne ligne 11, ça m'édite la ligne 10... En la sélectionnant, pas de succès non plus.
En effet, s'il était possible de faire cela sans que la base de données soit ouverte, ce serait cool (le débogage m'a fait beugé :D )
Aussi, je ne pensais pas vraiment à une case de recherche, mais plutôt à la colonne A dont les cellules seraient des "chercheuses".
Exemple : En A10, je tape la lettre J, la cellule me propose JEAN, JORIS, JAURES. Si je clique sur JEAN, il m'ajoute en A10, B10 et C10 les cellules correspondantes de la base de données.
En A11, je tape la lettre P, la cellule propose PIERRE, PAUL. Si je clique sur PAUL, etc...
Je sais pas si c'est claire cette affaire :p
Ca fonctionne, mais pas partout.
Si je souhaite ajouter une personne ligne 11, ça m'édite la ligne 10... En la sélectionnant, pas de succès non plus.
En effet, s'il était possible de faire cela sans que la base de données soit ouverte, ce serait cool (le débogage m'a fait beugé :D )
Aussi, je ne pensais pas vraiment à une case de recherche, mais plutôt à la colonne A dont les cellules seraient des "chercheuses".
Exemple : En A10, je tape la lettre J, la cellule me propose JEAN, JORIS, JAURES. Si je clique sur JEAN, il m'ajoute en A10, B10 et C10 les cellules correspondantes de la base de données.
En A11, je tape la lettre P, la cellule propose PIERRE, PAUL. Si je clique sur PAUL, etc...
Je sais pas si c'est claire cette affaire :p
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 743
12 août 2014 à 14:22
12 août 2014 à 14:22
C'est clair, mais...
L'événement Change de la feuille de calcul ne se déclenche pas à la saisie des lettres dans une cellule. De plus, tu ne peux pas cliquer sur une partie de la cellule.
Ce que je t'ai bricolé est la meilleure solution : un textbox et une listbox. Tu peux jouer sur l'esthétique si tu le désires...
Pour l'insertion de ligne, je regarde ça de suite.
Egalement pour travailler avec le classeur base de données fermé...
L'événement Change de la feuille de calcul ne se déclenche pas à la saisie des lettres dans une cellule. De plus, tu ne peux pas cliquer sur une partie de la cellule.
Ce que je t'ai bricolé est la meilleure solution : un textbox et une listbox. Tu peux jouer sur l'esthétique si tu le désires...
Pour l'insertion de ligne, je regarde ça de suite.
Egalement pour travailler avec le classeur base de données fermé...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 743
12 août 2014 à 15:42
12 août 2014 à 15:42
Voici : https://www.cjoint.com/c/DHmpOJNCMvm
Le classeur base de données doit être fermé absolument.
Il doit également être dans le même répertoire que celui-ci.
Si ça ne va pas comme fonctionnement, dis le
Attention, si tu passes en mode création ou que tu va dans l'éditeur VBA, il te faudra fermer puis ré-ouvrir le classeur pour que cela fonctionne...
Le classeur base de données doit être fermé absolument.
Il doit également être dans le même répertoire que celui-ci.
Si ça ne va pas comme fonctionnement, dis le
Attention, si tu passes en mode création ou que tu va dans l'éditeur VBA, il te faudra fermer puis ré-ouvrir le classeur pour que cela fonctionne...
Nai
Messages postés
711
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
25 août 2023
54
14 août 2014 à 19:43
14 août 2014 à 19:43
Merci et désolé pour le délais.
Ca fonctionne, merci ! Mais... (évidemment :p )
Impossible d'ajouter des données manuellement (donc sans la base de données) après avoir ajouté une ligne. Le tout, sans retirer la protection. Dans mon VBA de départ, les colonnes A, B et C (NOM, Prénom, Date de naissance) n'étaient pas protégées, et permettaient l'ajout de données. Là, non. Aussi, tu as retiré la ligne concernant les enfants en dehors des tranches d'âge prévues, la tranche "???", mais bon, je le remettrais, mais je me suis dis qu'il y avait peut-être une raison ?
Encore, à l'ajout d'une nouvelle ligne, les formules ne prennent plus en compte cette insertion :/ J'ai remédié en incluant la ligne 9, bonne idée ou pas ?
Je ne parviens pas à modifier le champ de recherche. Je trouve qu'il n'est pas assez visible. Je voudrais l'encadrer et, mieux, ajouter un texte : "Ajouter un enfant depuis la base de donné" qui disparaîtrait au clic, possible ?
Encore merci pour l'attention que tu porte à ma demande !
Bien à toi,
Naï.
Ca fonctionne, merci ! Mais... (évidemment :p )
Impossible d'ajouter des données manuellement (donc sans la base de données) après avoir ajouté une ligne. Le tout, sans retirer la protection. Dans mon VBA de départ, les colonnes A, B et C (NOM, Prénom, Date de naissance) n'étaient pas protégées, et permettaient l'ajout de données. Là, non. Aussi, tu as retiré la ligne concernant les enfants en dehors des tranches d'âge prévues, la tranche "???", mais bon, je le remettrais, mais je me suis dis qu'il y avait peut-être une raison ?
Encore, à l'ajout d'une nouvelle ligne, les formules ne prennent plus en compte cette insertion :/ J'ai remédié en incluant la ligne 9, bonne idée ou pas ?
Je ne parviens pas à modifier le champ de recherche. Je trouve qu'il n'est pas assez visible. Je voudrais l'encadrer et, mieux, ajouter un texte : "Ajouter un enfant depuis la base de donné" qui disparaîtrait au clic, possible ?
Encore merci pour l'attention que tu porte à ma demande !
Bien à toi,
Naï.
Nai
Messages postés
711
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
25 août 2023
54
20 sept. 2014 à 01:29
20 sept. 2014 à 01:29
Merci pour ton aide Pijaku ! :)
Il me reste simplement le problème cité plus haut :/
Celui pouvant être résolu si l'enfant est ajouté dans la base de donné.
En l'absence de celle-ci, tant pis :D
Il me reste simplement le problème cité plus haut :/
Celui pouvant être résolu si l'enfant est ajouté dans la base de donné.
En l'absence de celle-ci, tant pis :D
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 743
22 sept. 2014 à 07:56
22 sept. 2014 à 07:56
Bonjour,
Je ne comprends pas bien (clairement) ce que tu souhaites réaliser.
Pourrais tu être un peu plus explicite et nous repasser un fichier?
Je ne comprends pas bien (clairement) ce que tu souhaites réaliser.
Pourrais tu être un peu plus explicite et nous repasser un fichier?
Nai
Messages postés
711
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
25 août 2023
54
22 sept. 2014 à 13:05
22 sept. 2014 à 13:05
Bonjour Pijaku :)
Voici le fichier servant de base de donnée : https://www.cjoint.com/c/DIwm7n4RhzX
Et le fichier qui l'appelle : https://www.cjoint.com/c/DIwm7RNGv74
En ouvrant le classeur Effectif, feuille "Feuille de présence".
Je clique sur Ajouter une ligne enfant.
Maintenant, en A10, je souhaite ajouter un enfant n'apparaissant pas dans la base de donnée.
Là, j'ai deux possibilité :
1) Ajouter l'enfant directement dans l'onglet Feuille de présence du classeur Effectif
2) Ajouter l'enfant à la base de donnée (donc, fermer le fichier effectif, ajouter l'enfant dans la base de donnée, fermer cette dernière et rouvrir l'effectif. Puisque le classeur base de donnée ne doit pas être ouvert en même temps que l'effectif, si j'ai bien compris.).
La première solution. Je n'y arrive pas. Je dois déprotéger la feuille pour ajouter un môme.
La deuxième solution est un soupçon contraignante :D
Le top du top serait qu'un enfant ajouté directement dans le classeur effectif soit ajouté à la base de donnée, mais j'en demande beaucoup, d'autant qu'en l'état actuel je ne peux pas ajouter d'enfant manuellement dans le classeur Effectif ;)
Voici le fichier servant de base de donnée : https://www.cjoint.com/c/DIwm7n4RhzX
Et le fichier qui l'appelle : https://www.cjoint.com/c/DIwm7RNGv74
En ouvrant le classeur Effectif, feuille "Feuille de présence".
Je clique sur Ajouter une ligne enfant.
Maintenant, en A10, je souhaite ajouter un enfant n'apparaissant pas dans la base de donnée.
Là, j'ai deux possibilité :
1) Ajouter l'enfant directement dans l'onglet Feuille de présence du classeur Effectif
2) Ajouter l'enfant à la base de donnée (donc, fermer le fichier effectif, ajouter l'enfant dans la base de donnée, fermer cette dernière et rouvrir l'effectif. Puisque le classeur base de donnée ne doit pas être ouvert en même temps que l'effectif, si j'ai bien compris.).
La première solution. Je n'y arrive pas. Je dois déprotéger la feuille pour ajouter un môme.
La deuxième solution est un soupçon contraignante :D
Le top du top serait qu'un enfant ajouté directement dans le classeur effectif soit ajouté à la base de donnée, mais j'en demande beaucoup, d'autant qu'en l'état actuel je ne peux pas ajouter d'enfant manuellement dans le classeur Effectif ;)
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 743
23 sept. 2014 à 09:13
23 sept. 2014 à 09:13
Bonjour,
Je t'ai préparé une petite interface de saisie.
Celle-ci s'ouvre lors d'un clic sur le bouton NOUVEL ENFANt.
Elle te permettra d'enregistrer un nouvel enfant dans la base de données.
Cet enfant sera disponible immédiatement après son enregistrement...
J'en ai profité également pour enlever 2 petits bugs :
- lorsque tu sortais du textbox sans rien saisir, la listbox restait affichée... Plus maintenant.
- il n'y a plus de message d'alerte "voulez-vous enregistrer les changements..."
Voici ton classeur en retour
Je t'ai préparé une petite interface de saisie.
Celle-ci s'ouvre lors d'un clic sur le bouton NOUVEL ENFANt.
Elle te permettra d'enregistrer un nouvel enfant dans la base de données.
Cet enfant sera disponible immédiatement après son enregistrement...
J'en ai profité également pour enlever 2 petits bugs :
- lorsque tu sortais du textbox sans rien saisir, la listbox restait affichée... Plus maintenant.
- il n'y a plus de message d'alerte "voulez-vous enregistrer les changements..."
Voici ton classeur en retour
Nai
Messages postés
711
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
25 août 2023
54
23 sept. 2014 à 17:36
23 sept. 2014 à 17:36
- lorsque tu sortais du textbox sans rien saisir, la listbox restait affichée... Plus maintenant.
Magnifique !
il n'y a plus de message d'alerte "voulez-vous enregistrer les changements..."
Parfait ! Je m'en sortais en acceptant l'enregistrement :)
Merci pour le bouton ajouter un enfant à la base de donnée ! C'est fort pratique !
Un petit soucis, lorsque je saisi la lettre L (ou une autre) dans la zone de recherche, je ne parviens à voir plus d'un enfant dont le nom commence par cette lettre. Impossible de descendre, ni avec la molette de la souris, ni en cliquant sur la petite flèche du bas :/
Peut-être que j'utilise mal la zone ?
Magnifique !
il n'y a plus de message d'alerte "voulez-vous enregistrer les changements..."
Parfait ! Je m'en sortais en acceptant l'enregistrement :)
Merci pour le bouton ajouter un enfant à la base de donnée ! C'est fort pratique !
Un petit soucis, lorsque je saisi la lettre L (ou une autre) dans la zone de recherche, je ne parviens à voir plus d'un enfant dont le nom commence par cette lettre. Impossible de descendre, ni avec la molette de la souris, ni en cliquant sur la petite flèche du bas :/
Peut-être que j'utilise mal la zone ?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 743
25 sept. 2014 à 07:55
25 sept. 2014 à 07:55
Salut,
Il est possible qu'une action décharge la base de données qui est placée en mémoire.
Je n'ai pas pu observer ce bug, mais j'ai ajouté un bouton "recharger base"...
https://www.cjoint.com/?DIzh6kgkTdA
Il est possible qu'une action décharge la base de données qui est placée en mémoire.
Je n'ai pas pu observer ce bug, mais j'ai ajouté un bouton "recharger base"...
https://www.cjoint.com/?DIzh6kgkTdA
Nai
Messages postés
711
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
25 août 2023
54
25 sept. 2014 à 23:42
25 sept. 2014 à 23:42
Bonsoir,
Cela ne résous pas le problème... Voir : https://imageshack.com/i/hjxynEKap
Je pense (pense seulement) que la taille de la listbox est petite. Je n'ai pas trouvé où est écrit la taille.
En tout cas, recharger la base de données ne fonctionne pas :/
Cela ne résous pas le problème... Voir : https://imageshack.com/i/hjxynEKap
Je pense (pense seulement) que la taille de la listbox est petite. Je n'ai pas trouvé où est écrit la taille.
En tout cas, recharger la base de données ne fonctionne pas :/
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 743
26 sept. 2014 à 07:46
26 sept. 2014 à 07:46
Salut,
Si ça n'est que ça, augmente sa taille...
Pour cela :
- déprotège ta feuille,
- passe en mode création (onglet développeur, icône en forme d'équerre)
- clic sur la listbox
- augmente la autant que de besoin
- refait toutes les opérations à l'envers (enlève le mode création et reprotège ta feuille)
Si ça n'est que ça, augmente sa taille...
Pour cela :
- déprotège ta feuille,
- passe en mode création (onglet développeur, icône en forme d'équerre)
- clic sur la listbox
- augmente la autant que de besoin
- refait toutes les opérations à l'envers (enlève le mode création et reprotège ta feuille)
Nai
Messages postés
711
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
25 août 2023
54
26 sept. 2014 à 13:46
26 sept. 2014 à 13:46
Tout simplement :D
En fait, ce sont les flèches qui ne semblent pas fonctionner...
J'ai beaucoup d'enfants dont le nom commence par LAL, ainsi, si je tape L, j'ai fait en sorte, via le mode création, d'afficher au moins deux enfants. Avec ce L, j'ai plein de mômes, et je ne peux pas descendre.
En gros, je dois faire en sorte, dans ma recherche, d'être si précis que je dois faire afficher deux enfants max.
Alors, je pourrais en effet étirer la zone bien plus bas, mais visuellement, ça me plait moins :p
Pourquoi ces flèches ne fonctionne pas ?
En fait, ce sont les flèches qui ne semblent pas fonctionner...
J'ai beaucoup d'enfants dont le nom commence par LAL, ainsi, si je tape L, j'ai fait en sorte, via le mode création, d'afficher au moins deux enfants. Avec ce L, j'ai plein de mômes, et je ne peux pas descendre.
En gros, je dois faire en sorte, dans ma recherche, d'être si précis que je dois faire afficher deux enfants max.
Alors, je pourrais en effet étirer la zone bien plus bas, mais visuellement, ça me plait moins :p
Pourquoi ces flèches ne fonctionne pas ?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 743
26 sept. 2014 à 13:49
26 sept. 2014 à 13:49
Les flèches fonctionnent. Mais...
lorsque tu sortais du textbox sans rien saisir, la listbox restait affichée... Plus maintenant.
A chaque fois que tu sors du textbox, la liste disparait. Donc, en gros, tu n'as pas le temps de voir l'action de ton clic sur la flèche...
lorsque tu sortais du textbox sans rien saisir, la listbox restait affichée... Plus maintenant.
A chaque fois que tu sors du textbox, la liste disparait. Donc, en gros, tu n'as pas le temps de voir l'action de ton clic sur la flèche...
Nai
Messages postés
711
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
25 août 2023
54
1 oct. 2014 à 21:58
1 oct. 2014 à 21:58
Ah, c'est embêtant :/
Comment corriger cela ?
Est-ce qu'on peut élargir la zone de clique qui ne fait pas disparaître la liste ?
Comment corriger cela ?
Est-ce qu'on peut élargir la zone de clique qui ne fait pas disparaître la liste ?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 743
2 oct. 2014 à 07:37
2 oct. 2014 à 07:37
Essaye, dans le code de la feuille "feuille de présence", de remplacer :
par :
Private Sub TextBox1_LostFocus() TextBox1 = "" ListBox1.Visible = False End Sub
par :
Private Sub TextBox1_LostFocus() If TextBox1 = "" Then ListBox1.Visible = False Else ListBox1.Visible = True End Sub
Nai
Messages postés
711
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
25 août 2023
54
3 oct. 2014 à 12:05
3 oct. 2014 à 12:05
Magnifique ! :D
Merci !
Merci !
Nai
Messages postés
711
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
25 août 2023
54
14 oct. 2014 à 22:11
14 oct. 2014 à 22:11
Me revoilà !
Bonsoir !
https://forums.commentcamarche.net/forum/oldest/30645995-completer-lignes-depuis-autre-classeur-base-de-donnees#7
Le classeur base de données doit être fermé absolument.
Je me rend compte qu'en pratique, il pourrait être intéressant que le classeur base de données soit indifféremment ouvert ou fermé. Pijaku parlait de l'un ou de l'autre, mais les deux sont-ils possibles ?
Bonsoir !
https://forums.commentcamarche.net/forum/oldest/30645995-completer-lignes-depuis-autre-classeur-base-de-donnees#7
Le classeur base de données doit être fermé absolument.
Je me rend compte qu'en pratique, il pourrait être intéressant que le classeur base de données soit indifféremment ouvert ou fermé. Pijaku parlait de l'un ou de l'autre, mais les deux sont-ils possibles ?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 743
15 oct. 2014 à 08:13
15 oct. 2014 à 08:13
Bonjour,
les deux sont-ils possibles ?
Oui.
Peux tu nous repasser les fichiers?
les deux sont-ils possibles ?
Oui.
Peux tu nous repasser les fichiers?
Nai
Messages postés
711
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
25 août 2023
54
15 oct. 2014 à 10:56
15 oct. 2014 à 10:56
Voici le classeur : https://www.cjoint.com/c/DJplapDO0IW
Merci de m'indiquer les macros et le texte modifié. J'ai une version 4 semaines à mettre à jour également :)
Merci encore !
Merci de m'indiquer les macros et le texte modifié. J'ai une version 4 semaines à mettre à jour également :)
Merci encore !
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 743
15 oct. 2014 à 11:07
15 oct. 2014 à 11:07
Alors, tu n'as qu'une ligne de code à modifier dans la procédure Workbook_Open :
Et ajouter cette fonction, en dessous du Workbook_Open (par exemple) :
Ce qui nous donne le module ThisWorkbook suivant :
Private Sub Workbook_Open() Dim derlig As Long On Error GoTo sortie 'ICI LA LIGNE MODIFIEE : If FichierOuvert("bdd.xlsx") = False Then Workbooks.Open ThisWorkbook.Path & "\bdd.xlsx" 'la ligne qui pose problème With Workbooks("bdd.xlsx").Sheets("Feuil1") derlig = .Range("A" & Rows.Count).End(xlUp).Row Sources = .Range("A2:C" & derlig).Value End With ActiveWorkbook.Close SaveChanges:=True With Sheets("Feuille de présence") .ListBox1.Visible = False End With supervision Exit Sub sortie: MsgBox "Désolé mais la base de données n'a pas été trouvé." & vbLf & "Pour utiliser une base de données, merci de placer le fichier bdd.xlsx dans le dossier : " & ThisWorkbook.Path & "" & vbLf & "Plus d'aide : www.lanimetvous.com" On Error GoTo 0 End Sub
Et ajouter cette fonction, en dessous du Workbook_Open (par exemple) :
Function FichierOuvert(NomFic As String) As Boolean Dim Wbk As Workbook FichierOuvert = False For Each Wbk In Application.Workbooks If Wbk.Name = NomFic Then FichierOuvert = True: Exit For Next Wbk End Function
Ce qui nous donne le module ThisWorkbook suivant :
Option Explicit Private Sub Workbook_Open() Dim derlig As Long On Error GoTo sortie If FichierOuvert("bdd.xlsx") = False Then Workbooks.Open ThisWorkbook.Path & "\bdd.xlsx" 'la ligne qui pose problème With Workbooks("bdd.xlsx").Sheets("Feuil1") derlig = .Range("A" & Rows.Count).End(xlUp).Row Sources = .Range("A2:C" & derlig).Value End With ActiveWorkbook.Close SaveChanges:=True With Sheets("Feuille de présence") .ListBox1.Visible = False End With supervision Exit Sub sortie: MsgBox "Désolé mais la base de données n'a pas été trouvé." & vbLf & "Pour utiliser une base de données, merci de placer le fichier bdd.xlsx dans le dossier : " & ThisWorkbook.Path & "" & vbLf & "Plus d'aide : www.lanimetvous.com" On Error GoTo 0 End Sub Function FichierOuvert(NomFic As String) As Boolean Dim Wbk As Workbook FichierOuvert = False For Each Wbk In Application.Workbooks If Wbk.Name = NomFic Then FichierOuvert = True: Exit For Next Wbk End Function Private Sub Workbook_BeforeClose(Cancel As Boolean) finSupervision End Sub Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) If Sh.Type = xlWorksheet Then Sh.Protect "alsh", DrawingObjects:=True, Contents:=True, Scenarios:=True _ , AllowInsertingColumns:=True, AllowInsertingRows:=True, _ AllowInsertingHyperlinks:=True Else ' Graph Sh.Protect "alsh", DrawingObjects:=True, Contents:=True, Scenarios:=True End If End Sub
Nai
Messages postés
711
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
25 août 2023
54
15 oct. 2014 à 11:35
15 oct. 2014 à 11:35
Tout petit problème : Si la bdd est ouverte avant le classeur principal, impossible d'ouvrir le classeur.
Je pense qu'il s'ouvre, puis se referme, d'après le visuel.
Je pense que c'est cette ligne qui dit de ferme le classeur si bdd est ouvert :
En modifiant True en False, pas mieux. Presque pire en fait :D
Il me propose de rouvrir bdd.xlsx mais que toutes modifications seront perdues. Si j'accepte de rouvrir, il le ferme :D
Je pense qu'il s'ouvre, puis se referme, d'après le visuel.
Je pense que c'est cette ligne qui dit de ferme le classeur si bdd est ouvert :
If Wbk.Name = NomFic Then FichierOuvert = True: Exit For
En modifiant True en False, pas mieux. Presque pire en fait :D
Il me propose de rouvrir bdd.xlsx mais que toutes modifications seront perdues. Si j'accepte de rouvrir, il le ferme :D
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 743
15 oct. 2014 à 12:33
15 oct. 2014 à 12:33
Renvoie nous donc les 2 fichiers pour tests...
Nai
Messages postés
711
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
25 août 2023
54
15 oct. 2014 à 13:03
15 oct. 2014 à 13:03
Le premier : https://www.cjoint.com/c/DJpnfLO5VA0
Et la bdd : https://www.cjoint.com/c/DJpng2NHgnN
Et la bdd : https://www.cjoint.com/c/DJpng2NHgnN