Petites précisons

  • Initiateur de la discussion G'Claire
  • Date de début
G

G'Claire

Guest
Salut a toutes et tous



Je tente de partir a zero pour un nouveau fichier pour gérer des outillages dans ma boite.

Mais pour commencer comment récupérer mes données dans une liste de séléction, j'ai beau analiser le fichier que vous m'avait fait rien a faire .

Merci d'avance, G'Claire
 
@

@+Thierry

Guest
Salut G'Claire, le Forum

T'es plus dans les balais, Euh pardon les Ballets (lol) ! Dans les Outils maintenant... Bon ben oui, mais de quel fichier parles-tu ??? (pas celui des ballets je suppose ?)

Fais un lien, car les gens (et moi-même) ne vont par chercher dans tous les fils de discussions pour trouver de quoi tu parles... Où alors reste dans le même fil de discussion.

Pour faire un lien ici c'est simple tu copie et paste l'URL comme ceci :

http://www.excel-downloads.com/html/French/forum/messages/1_28707_28707.htm

Ensuite au début et à la fine tu encadres avec < et > comme ça :
<http://www.excel-downloads.com/html/French/forum/messages/1_28707_28707.htm>

Ici je mets les <> a l'envers pour que tu puisses les voir !
>http://www.excel-downloads.com/html/French/forum/messages/1_28707_28707.htm<


Voilà çà aide pour te suivre !!!
Bonne Nuit
@+Thierry
 
G

G'Claire

Guest
Thierry et tous celles et ceux du forum

Non, non je ne suis presque plus dans les ballets (Sauf que je n'arrive plus a avoir les liens entre la feuille "planning" et les feuilles "Fiche Prog" et "Fiches balances").

<http://www.excel-downloads.com/html/French/forum/download.php?finfo=1,27549,2432/XLD-Generation-Ballets-V3s1.zip>

Je suis sur un nouveau fichier, pour gérer le parc outillages de ma boite et pôur le moment j'essaye de comprendre comment faire pour créer une liste de sélection a l'aide de données inscritent dans une feuille "Données".

Mais je n'y arrive pas bien.

Merci, G'Claire
 
G

G'Claire

Guest
Resalut

Bon j'ai réussi a créer une liste déroulante (Merci au Post mode d'emploi de Veriland).

Mais comme mes données sont sur une autre feuille, je n'arrive pas a les saisire, cela me fait une liste vide.

Merci, g'claire
 
@

@+Thierry

Guest
Salut J'éclaire ! :)

AAA) Pour ton problème de lien sur "XLD-Generation-Ballets-V3s1"
tu rajoutes ceci : "Lien = CheckBox1"
En effet la version 3 que j'ai dûe alléger, ne contient plus le USF qui gérait l'initialisation de cette variable....

Tu vas dans le Private Module de la feuille "Tool_Planning et tu modifies la macro du CommandButton1 comme suit :

Private Sub CommandButton1_Click()
Lien = CheckBox1
Call creer_feuille
End Sub


BBB) Pour ton problème de Liste Déroulante, qu'appelles-tu une liste déroulante ??? ... Tu me fais faire trois réponses !

Réponse 1
Liste de Validation du Menu => Données => Validation
Dans ce cas si tes données sont dans une autre feuille, il faut nommer la plage de cellule qui contient les données... Par exemple "LeNomDeTaPlage"
(Pour nommer une plage, tu la sélectionnes, tu vas dans Menu => Insertion / Nom => Definir...)


Ensuite dans le Pop-Up de "Donnée Validation" tu indiques :
Autorise => Liste
Source => = LeNomDeLaPlage

Réponse 2
ListBox de la barre d'outils "FORMULAIRE"
Tu sélectionnes la Listbox, tu fais un click de droite, dans le menu contextuel tu choisis "Format du Contrôle", puis ongle "Contrôle", dans la barre "input range" tu indiques (par exemple) "Sheet1!$A$1:$A$9"(sans les Guillements mais avec le !)


Réponse 3
ListBox de la barre d'outils "CONTROLE"
Tu sélectionnes la Listbox, tu fais un click de droite, dans le menu contextuel tu choisis "Propriété", tu cherche "ListFillRange" et tu indiques
(par exemple) "Sheet1!$A$1:$A$9" (sans les Guillements mais avec le !)

Voilà, bon travail
Bonne Soirée
@+Thierry
 
@

@+Thierry

Guest
PS ... petit complément d'info...

A Noter que la plage nommée fonctionne aussi pour les ListBox de mes deux Répones N°2 et N°3
Au lieu de mettre : Sheet1!$A$1:$A$9
on met : LeNomDeLaPlage

Voilà
Bonne Soirée
@+Thierry
 
G

G'Claire

Guest
Thierry

Pour Liste déroulante

Avec un peu de mal mais cela marche

Moyen utiliser N°1, j'oublier de mettre le égale dans la source avant la nomination

Modife dans mon fichier (Génération ballets) pour avoir le lien, effectué, cela marche.

Es-ce que cela t'embète si je demande de rajouter deux choses a ce fichier?

<http://www.excel-downloads.com/html/French/forum/download.php?finfo=1,27549,2432/XLD-Generation-Ballets-V3s1.zip>

Pour nous faciliter quelques manipulation.

Merci, G'Claire
 
G

G'Claire

Guest
Thierry

Merci de ta patience.

La première

Pouvoir rajouter/supprimer un ballet entre les parties?

La deuxième

Quand on supprime des feuilles "Fiche prog" et "Fiches bal" (Qui sont ensemble)

Es-ce qu'il peut avoir un moyen, si on en rajoute, quelle se rajoutent a leurs place.

Je m'explique (enfin je vais essayer)

Si j'ai créer 3 "Fiche prog" et "Fiches bal"

Fiche prog 1.1
Fiche bal 1.1

Fiche prog 1.2
Fiche bal 1.2

Fiche prog 1.3
Fiche bal 1.3

Que je supprime

Les 1.1 et 1.3

Si j'en recrées cela va m'avertir que les 1.2 sont déjà crées, mais les nouvelles, cela me les mais a la fin.

Es-ce qu'il serait possible que cela me les remettent a leurs places respectives

Merci beaucoup, G'Claire
 
@

@+Thierry

Guest
RE Salut G'Claire

Pour la première... Tu parles de quoi ? "rajouter/supprimer un ballet entre les parties?"

On est dans quoi la feuille "Tool_Planning" tu veux effacer des lignes ?
oui pas de problème... tu peux logiquement ré-écrire dans les lignes vides ainsi... Sinon tu peux carrément supprimer des lignes... Mais n'oublie pas dans ces changements de purger les Feuilles Correpondantes en Utilsant le Bouton prévu à cet effet.

Pour La Seconde... Non, enfin non, je m'entends car tout est possible en VBA, mais là il faut tout reprendre à zéro (le code entier de génération de feuilles), et c'est vraiment du spécifique rien que pour toi, donc je n'ai ni le temps, ni vraiment l'envie de tout refaire. Par contre...

Il va falloir mettre un peu les mains dans le camboui macrobiotique...

NB Fais une copie de sauvegarde de ton fichier avant de te lancer dans la suite...

Donc je disais........ Oui Oui Par Contre... !!
Grace à Michel Pierron (MPFE) tu peux avoir une solution...

En fait (pour l'instant) on change rien de grave au macros existantes et on rajoute deux choses...

111)
Dans la macro "Sub creer_feuille()" (module1)

Tout à la fin juste avant "End Sub" tu remplace ceci :
WSBase.Activate
End Sub

Par Ceci :
SheetsSort
WSBase.Activate
End Sub

et en dessous tu laisse donc le End Sub (te plantes pas !!)

222)
Tu créés un nouveau Modul qui sera donc le Module3 et tu colles ceci :
'============================================================================
Sub SheetsSort()
'Code de Michel Pierron, mpfe
Dim id As Byte, no As Byte, ValNom(1) As Byte
Dim StrNom(1) As String

no = 1
Application.ScreenUpdating = False
Do While no < Sheets.Count
id = Sheets.Count
Do While id > no
If IsAlphaNum(Sheets(id).Name) And IsAlphaNum(Sheets(id - 1).Name) Then
StrNom(0) = Left(Sheets(id).Name, Len(Sheets(id).Name) - iPos(Sheets(id).Name))
ValNom(0) = Mid(Sheets(id).Name, Len(StrNom(0)) + 1)
StrNom(1) = Left(Sheets(id - 1).Name, Len(Sheets(id - 1).Name) - iPos(Sheets(id - 1).Name))
ValNom(1) = Mid(Sheets(id - 1).Name, Len(StrNom(1)) + 1)
Select Case StrComp(StrNom(0), StrNom(1), 1)
Case -1
Sheets(id).Move Before:=Sheets(id - 1)
Case 0
If ValNom(0) < ValNom(1) Then Sheets(id).Move Before:=Sheets(id - 1)
End Select
Else
If StrComp(Sheets(id).Name, Sheets(id - 1).Name, 1) = -1 Then
Sheets(id).Move Before:=Sheets(id - 1)
End If
End If
id = id - 1
Loop
no = no + 1
Loop
Sheets(1).Activate
Application.ScreenUpdating = True
End Sub

Private Function IsAlphaNum(NameSheet As String) As Boolean
IsAlphaNum = Not IsNumeric(NameSheet) And IsNumeric(Right(NameSheet, 1))
End Function

Private Function iPos(NameSheet As String) As Byte
iPos = 0
Do While IsNumeric(Right(NameSheet, iPos + 1))
iPos = iPos + 1
Loop
End Function
'============================================================================

Si t'es arrivé jusque là et que çà marche... Alors tu commences à être un bon !

ATTENTION ce n'est pas gagné d'avance... Les Feuilles vont se retrouvées triées de Gauche à Droite comme Ceci :

Balance 01.01
Balance 01.02
Balance 01.03
Prog 01.01
Prog 01.02
Prog 01.03
Tool Balance
Tool Prog
Tool_Planning

Faut voir si ça te convient.....

SINON... Si t'es pas content du Résultat...(ouf !!)... il y aurait une possibilité... (mais là faut que tu soies vraiment calme et patient et que tu te plantes pas car je reviendrai plus là dessus...)

Dans la macro "Sub creer_feuille()" (module1)
Tu changes les Lignes suivantes...
NewWSProg = "Prog " & Format(ItemA, "00") & "." & Format(ItemB, "00")
NewWSBce = "Balance " & Format(ItemA, "00") & "." & Format(ItemB, "00")

Par :
NewWSProg = Format(ItemA, "00") & "-" & Format(ItemB, "00") & "-P"
NewWSBce = Format(ItemA, "00") & "-" & Format(ItemB, "00") & "-B"

PAR CONTRE IL Y A ENCORE DU BOULOT ........ Et oui C'est Pas Finit, faut penser çà tout quand on modifie quelque chose !!!!!!!

Dans la macro "Private Sub UserForm_Initialize()" (Private module UserForm1)
Tu changes les Lignes suivantes...
For Each WS In Worksheets
If Left(WS.Name, 4) <> "Tool" And Left(WS.Name, 3) <> "Bal" Then
ListBox1.AddItem Right(WS.Name, 5)
End If
Next

Par :
For Each WS In Worksheets
If Right(WS.Name, 4) <> "Tool" Then
ListBox1.AddItem Left(WS.Name, 5)
End If
Next

ET ENSUITE ........ C'est PRESQUE Finit !!!!!!!

Dans la macro "Private Sub CommandButton1_Click()" (Private module UserForm1)
Tu changes :
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
Sheets("Prog " & ListBox1.List(i)).Delete
Sheets("Balance " & ListBox1.List(i)).Delete
End If
Next i

Par :
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
On Error Resume Next
Sheets(CStr(ListBox1.List(i) & "-P")).Delete
Sheets(CStr(ListBox1.List(i) & "-B")).Delete
End If
Next i


ET ENSUITE ........ C'est pratiquement Finit !!!!!!!

Dans la macro "Private Sub CommandButton2_Click()" (Private module UserForm1)
Tu Changes :
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
Sheets("Prog " & ListBox1.List(i)).PrintOut
Sheets("Balance " & ListBox1.List(i)).PrintOut
End If
Next i

Par :
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
On Error Resume Next
Sheets(CStr(ListBox1.List(i) & "-P")).PrintOut
Sheets(CStr(ListBox1.List(i) & "-B")).PrintOut
End If
Next i

Oui je sais on dirait le même code mais pas dans le même bouton et c'est pas la même instruction !!! (Delete et PrintOut ... Te Plantes Pas !)

Si tu arrives à faire tout çà sans poser de question, et bien tu rentres dans le VBA's World pour de bon !!

Bonne "Amusement", si tu respectes ce que je t'ai dit "à la lettre, je dirai même la Virgule prêt !, ce devrait être OK.

Bonne Nuit
@+Thierry
 
@

@+Thierry

Guest
Et ben avec toi, j'ai battu deux reccords dans ce forum...

1) Le plus grand nombre de posts dans le même Fil de Discussion...
2) et maintenant le plus long Post explicatif !!!


@+Thierry
Take it Easy Just For The Fun​
 
G

G'Claire

Guest
Thierry

Au niveau des reccords, je ne pense pas que ce soit une bonne référence pour moi, (je dois être d'un niveau vraiment bas, alors). Mais bon je me rattraperai un jour.

Au niveau des modifications que tu m'a fait faire cela va.

J'ai voulu voir comment procéder pour que cela affiche dans la listebox (Partie suppression, impression) un seul sur les deux feuilles d'afficher (Comme version V3sl), mais rien trouver de différent entre les deux codes.

Je vais regarder encore.


Merci beaucoup, G'Claire
 
@

@+Thierry

Guest
salut G'Claire

heureux que ça marche !!

la différence vient de là :
Tu changes les Lignes suivantes...
For Each WS In Worksheets
If Left(WS.Name, 4) <> "Tool" And Left(WS.Name, 3) <> "Bal" Then
ListBox1.AddItem Right(WS.Name, 5)
End If
Next

Par :
For Each WS In Worksheets
If Right(WS.Name, 4) <> "Tool" Then
ListBox1.AddItem Left(WS.Name, 5)
End If
Next

il faut faire çà (Attention pas essayé, mais directement tapé ici dans ce post)

For Each WS In Worksheets
If Right(WS.Name, 4) <> "Tool" And Right(WS.Name, 1) <> "B" _
And Right(WS.Name, ) <> "P" Then
ListBox1.AddItem Left(WS.Name, 5)
End If
Next

bonne soirée
bon 1er Mai à tous et toutes
@+Thierry
 
@

@+Thierry

Guest
LOL non non non

Là tu n'auras rien d'affiché !

fais pluto çà :

For Each WS In Worksheets
If Right(WS.Name, 4) <> "Tool" And Right(WS.Name, 1) <> "B" Then
ListBox1.AddItem Left(WS.Name, 5)
End If
Next

lol @+Thierry
 
G

G'Claire

Guest
Thierry

j'ai oublié de te dire, sur mon post précédant, je n'ai plus de Userform1, j'en ai conclut que c'était les userform2, j'ai fait la modification et cela ne change rien.

Merci et bon1er mai a tout le monde, et pour les exeliennes une pensée avec un petit brin de muguet, (ne sais pas encore faire pour le visualiser sur le post), G'Claire
 

Statistiques des forums

Discussions
314 653
Messages
2 111 579
Membres
111 206
dernier inscrit
Dante76