XL 2010 Saisie Intuitive type Google

Zoman

XLDnaute Junior
Bonjour,

j'ai trouvé des tutos pour un saisie automatique en mode recherche de Google.Pour le Combo box 1 y'a aucun soucis mais pour le Combo box 2 j'y arrive pas.

Je veux afficher le nom et prénom dés que je saisie la première lettre du nom mais avec les noms et prénoms qui se trouve dans la cellule CD.

En espérant être claire dans mes explications, merci de vos réponses.

Je vous mets le fichier en pj
 

Pièces jointes

  • Copie de SaisieIntuitiveGoogle.xls
    109.5 KB · Affichages: 20
Solution
re
il faut bien identifier sur le code toutes les lignes ou figure le nom de la feuille et les modifier en conséquence
dans le nouveau classeur il ne faut pas oublier de nommer les plages ou se trouve les données
liste pour la combobox1 et liste2 pour la combobox2
cordialement
galougalou

GALOUGALOU

XLDnaute Accro
bonjour zoman bonjour le forum
j'ai adapté votre classeur mais je n'ai pas compris si à partir d'autre feuille vous vouliez dupliquer la feuille test ou la feuille active, aussi je vous joint le code à sélectionner en fonction de votre choix
mais dans tous les cas c'est dans la feuille active que sera testé les cellules f15 et a 21
VB:
'Sheets("Test").Copy After:=Worksheets("Test") 'utiliser cette procédure si vous voulez dupliquer la feuille test
ActiveSheet.Copy After:=Worksheets("Test") ' utiliser cette procédure si vous voulez dupliquer la feuille active
cordialement
galougalou
 

Pièces jointes

  • test v5.xlsm
    47.4 KB · Affichages: 10

Zoman

XLDnaute Junior
bonjour zoman bonjour le forum
j'ai adapté votre classeur mais je n'ai pas compris si à partir d'autre feuille vous vouliez dupliquer la feuille test ou la feuille active, aussi je vous joint le code à sélectionner en fonction de votre choix
mais dans tous les cas c'est dans la feuille active que sera testé les cellules f15 et a 21
VB:
'Sheets("Test").Copy After:=Worksheets("Test") 'utiliser cette procédure si vous voulez dupliquer la feuille test
ActiveSheet.Copy After:=Worksheets("Test") ' utiliser cette procédure si vous voulez dupliquer la feuille active
cordialement
galougalou

Bonjour Galougalou,

Merci de votre réponse, en fait l'utilisateur quand il ouvre le fichier il doit cliquer sur "ajout onglet" afin de dupliquer la feuille test. Du coup je veux que les conditions qui s'appliquent sur la feuilles test, s'appliquent également sur les feuilles dupliquées.

Je ne sais pas si vous avez compris,

Je vais essayer le code, merci encore.

Cdlt
 

Zoman

XLDnaute Junior
bonjour zoman bonjour le forum
j'ai adapté votre classeur mais je n'ai pas compris si à partir d'autre feuille vous vouliez dupliquer la feuille test ou la feuille active, aussi je vous joint le code à sélectionner en fonction de votre choix
mais dans tous les cas c'est dans la feuille active que sera testé les cellules f15 et a 21
VB:
'Sheets("Test").Copy After:=Worksheets("Test") 'utiliser cette procédure si vous voulez dupliquer la feuille test
ActiveSheet.Copy After:=Worksheets("Test") ' utiliser cette procédure si vous voulez dupliquer la feuille active
cordialement
galougalou

J'ai essayé le code mais il ne marche pas, déjà la procédure n'est pas bloquée si un x figure en f15 et que a 21 est vide. Le bouton enregistrer en pdf ne marche plus aussi je pense que vous avez enlevé le code qui était sur le classeur que je vous ai envoyé.

Pour simplifier les choses, on va se procéder comme suit : Pouvez vous mettre ce code ci dessous dans ce ficher ci-joint ?

Sub ajoutonglet()
Dim Nom As String
On Error GoTo GestionErreur 'début du code
If Sheets("Test").Range("f15") = "x" Or Sheets("Test").Range("f15") = "x" Or Sheets("Test").Range("f15") = "x" Or Sheets("Test").Range("f15") = "x" Then
If Sheets("Test").Range("a21") <> "" Then

Nom = InputBox("Ne pas saisir de caractère interdit dans un nom d'onglet. si vous saisissez un nom déjà utilisé l'onglet sera renommé Test (2): ", "NOM", "Test")
Sheets("Test").Copy After:=Worksheets("Test")
ActiveSheet.Name = Nom
'Fin du code
Else
MsgBox "Renseigner la feuille Test en cellule A21 !"
End If
End If

GestionErreur:

End Sub


Ce code marche avec l'ancien classeur, mais j'arrive pas à l'adapter avec ce nouveau classeur. Quand je clique ajout onglet, ça ne fait rien.

Merci
 

Pièces jointes

  • Test.xlsm
    17.1 KB · Affichages: 4

GALOUGALOU

XLDnaute Accro
re zoman
je viens de tester cela fonctionne
quand vous cliquer sur ajouter onglet et que la cellule f15 comporte un x et que la cellule a21 est vide, le programme vous demande si vous voulez ajouter un onglet, vous répondez oui et il va vous préciser qu'il faut renseigner la cellule a21 et arrêter la procédure. (la globalité de vos demande necessite de sécuriser la création d'onglet, raison du questionnement en début de procédure, sinon le risque est grand de créer accidentellement des nouveaux onglets)
pour le pdf vous m'aviez fourni un classeur vierge, je vous ais laissé toute latitude pour remette en place cette macro, elle était identique.
malgré tout, dans le classeur ci-joint le pdf est reconstitué, la création d'onglet est identique #31,
bon je vous laisse découvrir. sur l'instant je quitte le forum pour aujourd'hui
cordialement
galougalou
 

Pièces jointes

  • Copie de test v6.xlsm
    48.5 KB · Affichages: 5

Zoman

XLDnaute Junior
re zoman
je viens de tester cela fonctionne
quand vous cliquer sur ajouter onglet et que la cellule f15 comporte un x et que la cellule a21 est vide, le programme vous demande si vous voulez ajouter un onglet, vous répondez oui et il va vous préciser qu'il faut renseigner la cellule a21 et arrêter la procédure. (la globalité de vos demande necessite de sécuriser la création d'onglet, raison du questionnement en début de procédure, sinon le risque est grand de créer accidentellement des nouveaux onglets)
pour le pdf vous m'aviez fourni un classeur vierge, je vous ais laissé toute latitude pour remette en place cette macro, elle était identique.
malgré tout, dans le classeur ci-joint le pdf est reconstitué, la création d'onglet est identique #31,
bon je vous laisse découvrir. sur l'instant je quitte le forum pour aujourd'hui
cordialement
galougalou
Re Galougalou,

merci bien je vais le tester après.

cdlt
 

Zoman

XLDnaute Junior
Bonjour Galougalou bonjour le forum,

J'ai adapté mon classeur avec les codes que vous m'avez donné et d'autres codes sur internet, c'est exactement ça que je voulais, je vous mets en PJ mon nouveau fichier.

1. je veux que l'utilisateur n'arrive pas à enregistrer le fichier en PDF si la cellule G15 comporte un x et que la cellule A21 est vide.

2. Si l'utilisateur ajoute un onglet qui va être renommé en Test (2), il met un x sur la cellule G15 et que la cellule A21 est vide, dans ce cas aussi je veux bloquer le bouton enregistrement en pdf, le bouton ajout onglet et la fermeture du fichier excel.

3. Je veux que toutes ses règles s'appliquent sur toutes les feuilles qui seront créées.

Merci de votre aide

Cdlt
 

Pièces jointes

  • Copie de test v7.xlsm
    27.6 KB · Affichages: 4

GALOUGALOU

XLDnaute Accro
re zoman
en cellule ay1 pour récupérer le nom de l'onglet
VB:
=DROITE(CELLULE("nomfichier";Y1);NBCAR(CELLULE("nomfichier";Y1))-TROUVE("]";CELLULE("nomfichier";Y1)))


en cellule ax1 une formule vérifie si les conditions sont remplies pour autoriser la création d'onglet ou l'impression pdf
ce qui réduit le code macro à
Enrichi (BBcode):
Dim f1 As String
f1 = Range("ay1")
If Sheets(f1).Range("ax1") = 1 Then
Sheets(f1).Select
MsgBox "Renseigner la cellule A21 !"
End If

j'ai modifié les codes de création d'onglet en vu de simplifier la compréhension pour que puissiez vous les appropriés.

pour l'impression pdf, dans le code que vous avez trouvé, il me semble que la fermeture automatique du classeur est inutile et un risque existe de mal gérer l'enregistrement.
j'ai neutralisé la fermeture par l'ajout d'un ' dans le code ci dessous
VB:
'Application.Quit
, à vous de voir si vous la trouver nécessaire
deuxième chose le nom d'enregistrement est toujours identique, attention à l'écrasement des anciennes versions.

rajout - pour ne pas exporter des éléments inutiles, ne pas oublier de procéder au réglage de la mise en page .
cordialement
galougalou
 

Pièces jointes

  • test v10.xlsm
    51.8 KB · Affichages: 6
Dernière édition:

GALOUGALOU

XLDnaute Accro
re
je viens d'analyser le code enregistrement pdf. je constate une incohérence avec le classeur que vous m'avez fourni. le code est sensé récupérer une date en ligne 24 et en colonne 2. modifier pour adapter à votre classeur
Enrichi (BBcode):
Format(Sheets("Test").Cells(24, 2), "dd mmmm yyyy")

de plus à l'ouverture du classeur tous les onglets sont sélectionnés, il faut donc modifier le code pour l'enregistrement pdf. il faut positionner ------Sheets("Test").Select------------ avant la fermeture du classeur.

de plus beaucoup de répétition de select et d'activate qui me semble inutile.

je vous conseille de le remplacer par celui ci-dessous, qui va sauvegarder et fermer automatiquement le classeur. si cela ne vous convient pas, il vous suffit de supprimer la procédure d'enregistrement et de sauvegarde.

Enrichi (BBcode):
Sub SelectionOngletsCouleur()
Dim tabFeuilles() As String, curFeuille As Worksheet, nbFeuilles As Long
ReDim tabFeuilles(1 To 1): tabFeuilles(1) = ""
nbFeuilles = 0
For Each curFeuille In ThisWorkbook.Worksheets
If curFeuille.Tab.Color <> 255 Then
nbFeuilles = nbFeuilles + 1
ReDim Preserve tabFeuilles(1 To nbFeuilles)
tabFeuilles(nbFeuilles) = curFeuille.Name
End If
Next curFeuille
If tabFeuilles(1) <> "" Then ThisWorkbook.Sheets(tabFeuilles).Select
If MsgBox("Voulez-vous lancer l'enregistrement du fichier en PDF ?", vbYesNo + vbQuestion, "Sélection des onglets à imprimer") = vbYes Then
FileSaveName = Application.GetSaveAsFilename(InitialFileName:="Feuille Test_" & Format(Sheets("Test").Cells(24, 2), "dd mmmm yyyy") & ".pdf", filefilter:="Fichier PDF(*.pdf), *.pdf")
If FileSaveName <> False Then
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
FileSaveName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
Sheets("Test").Select
ThisWorkbook.Save
Application.Quit
Application.EnableEvents = True
End If
End If
End Sub
cordialement
galougalou
 

Zoman

XLDnaute Junior
Bonjour Galougalou, Bonjour le forum,

Merci de m'avoir aidé à résoudre mon problème, c'est exactement ce que je voulais mais y'a un petit sur les conditions à remplir pour autoriser la création d'onglet ou l'impression PDF.

En fait la condition c'est que si l'utilisateur mets un x sur la cellule G15 ou G16 ou H15 ou H16 et que la cellule A21 est vide il ne pourra plus créer un onglet ni imprimer en PDF ou fermer le document. En gros au moment ou il y'a un X sur une de ses cellules citées (G15,G16,H15,H16) et que la cellule A21 est vide il ne pourra rien faire et pas de mettre un x sur les 4 cellules pour que l'interdiction de création d'onglet ou d'impression en PDF s'applique.

Si non pour la sauvegarde du classeur, en fait l'idée c'est de mettre le classeur dans un Sharepoint et que l'utilisateur ouvre le document, rempli les données et enregistre le fichier en PDF. Mais il ne doit en aucun cas enregistrer le document c'est à dire ce qu'il vient de remplir même les onglets qu'il aura créé.
Du coup soit je dois créer un bouton de remise à zéro pour effacer les données saisies (ainsi que les onglets que l'utilisateur à rajouter) ou tout simplement interdire l'enregistrement du document après que l'utilisateur ai fini de travailler sur le document. comme ça si un autre utilisateur ouvre le fichier il pourra à son tour saisir ses propres données.

C'est parfait pour le moment, il faut que vous m'aidiez juste à changer la condition et soit mettre un bouton de remise à zéro ou d'interdire l’enregistrement du document.

Merci beaucoup.
Zoman
 

GALOUGALOU

XLDnaute Accro
re zoman
VB:
En fait la condition c'est que si l'utilisateur mets un x sur la cellule G15 ou G16 ou H15 ou H16 et que la cellule A21 est vide il ne pourra plus créer un onglet ni imprimer en PDF ou fermer le document. En gros au moment ou il y'a un X sur une de ses cellules citées (G15,G16,H15,H16) et que la cellule A21 est vide il ne pourra rien faire et .

c'est exactement ce que fait cette formule dans la cellule ax1
qu'il y ait une seule cellule sur les quatre avec un x, et que la cellule a21 soit vide, la situation sera bloquante.
Code:
=SI(ET(NB.SI(G15:H16;"x");A21="");"1";"")
elle écrit 1 ou rien du tout
les différentes macros interrogent cette cellule pour donner une autorisation d’exécution.

Enrichi (BBcode):
pas de mettre un x sur les 4 cellules pour que l'interdiction de création d'onglet ou d'impression en PDF s'applique
les quatre x que vous aviez dans le classeur sont du au différent test que j'ai effectué. il n'en découle en rien l'obligation de saisir 4 cellules avec un x. vous n'avez pas du tester, ou alors quelque chose m'a échappée.

pour la deuxième question
associer dans le classeur, à la feuille d'accueil un bouton avec la macro suivante
Enrichi (BBcode):
Sub effacer_tous_les_onglets()
For i = 1 To Sheets.Count 'boucle sur tous les onglets
  Sheets(i).Select ' selection des onglets un par un pour appliquer les procédures suivantes
Range("G15:H16").ClearContents 'effacement dans la feuille sélectionnée
Range("A21") = ""  'cellule fusionnée problèmatique pour clearcontents, remplacé par ""
Next i
  Sheets("Test").Select 'selection de la  feuille Test
End Sub
cordialement
galougalou
 

Zoman

XLDnaute Junior
Oui j'ai essayé les conditions et ça marche bien mais je ne comprends pas l'histoire des cellules Ax1 ou Ay1 ou se trouve ses cellules.

J'ai essayé d'adapter ses codes avec le document que je travaille mais ça ne marche pas. J'ai exactement les mêmes et j'ai pas oublié de changer le nom de la feuille test mais ça me met erreur et quand je clique sur débogage je vois ça If Sheets(f1).Range("ax1") = 1 Then en couleur jaune.

Ou est ce que vous avez placé ses codes :

=DROITE(CELLULE("nomfichier";Y1);NBCAR(CELLULE("nomfichier";Y1))-TROUVE("]";CELLULE("nomfichier";Y1)))

=SI(ET(NB.SI(G15:H16;"x");A21="");"1";"")

Je ne les vois pas dans le document

Merci
 

GALOUGALOU

XLDnaute Accro
re zoman
dans la feuille test , dans les cellules ax1 et AY1 (1er ligne)
formule ax ay.JPG


les macros faisant référence à ces cellules, il serait souhaitable que vous posiez la formule à l'identique.
cordialement
 

Zoman

XLDnaute Junior
J'ai mis les codes à la place qu'il faut mais ça fait toujours des erreurs. j'ai copié le code macro qui est sur la feuille Test et je l'ai collé sur le document que je travaille mais ça ne marche toujours pas.

Là je pense que c'est compliqué ...

Cdlt
 

Zoman

XLDnaute Junior
J'ai réussi à mettre les codes mais sur ma première feuille, il y'avait déjà des codes macros, mais si je veux rajouter ce code macro à ma feuille :
Option Explicit

Private Sub Worksheet_Deactivate()
Dim f1 As String
f1 = Range("ay1")
If Sheets(f1).Range("ax1") = 1 Then
Sheets(f1).Select
MsgBox "Renseigner la cellule A21 !"
End If

End Sub

je vois ça erreur de compilation : Seuls des commentaires peuvent apparaître après End Sub ...

Y'a t-il une solution ?

Pour mon document je vais voir, il contient beaucoup de données et des images ça va être compliqué de le poster
 

Discussions similaires

Statistiques des forums

Discussions
312 229
Messages
2 086 425
Membres
103 206
dernier inscrit
diambote