savoir comment faire

benji1919

XLDnaute Occasionnel
bonjour je voudrais qu'on procede par etape,

donc j'ai une grosse base de données excel, j'aimerais que dans ma combobox il ya tout les nom de mes feuilles de mon classeur excel, pour pouvoir choisir dans quelle feuille encoder les données.
je vous mais aussi mon fichier excel. comme sa vous pouvez comprendre mieux.
forme.jpg

je vous met aussi mon fichier excel a disposition.
 

Pièces jointes

  • blio.xlsm
    83.7 KB · Affichages: 42

benji1919

XLDnaute Occasionnel
bon par contre je ne trouve pas la bonne ligne de code pour pouvoir encoder dans mon fichier excel.

Code:
Private Sub UserForm_Initialize()
Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Sheets
    If ws.Name <> "Accueil" and ws.name<>"Feuil1" and ws.name<>"Feuil2" Then
        ComboBox1.AddItem ws.Name
        End If
    Next
End Sub

celui si c'est pour choisir quelle onglet mettre dans la combobox.
 

cp4

XLDnaute Barbatruc
Salut benji,

Je t'assure qu'à toute ma bonne volonté, je n'arrive pas à comprendre tes besoins.
Le code de ton post #54 veut dire ce qui suit:
VB:
For Each ws In ActiveWorkbook.Sheets ' - on parcourt toutes les feuilles du classeur
   If ws.Name <> "Accueil" and ws.name<>"Feuil1" and ws.name<>"Feuil2" Then ' condition pour écarter les feuilles dont le nom est: Accueil et Feuil1 et Feuil2
        ComboBox1.AddItem ws.Name 'on alimente la combobox.
        End If
Next
Ne pouvant comprendre tes attentes, je ne peux pas t'aider.
Cela ne signifie pas que je ne veux pas.

Bonne chance.
 

Staple1600

XLDnaute Barbatruc
Re

@benji1919
Encore une fois, il suffit de prendre le temps de lire et de comprendre les conseils et ou code qu'on te donne

Tu as deux codes à disposition pour lister le nom des onglets de ton classeur pour les mettre dans un combobox sur ton Userform
Tu as également un exemple de bouton qui fait une action sur la feuille choisie dans le Combobox
VB:
Private Sub CommandButton1_Click()
'Q = MsgBox("Vous avez choisi la feuille: " & Sheets(ComboBox1.Value).Name, vbYesNo, "Test")
'If Q = 6 Then
'ici tu mets le code de l'action que tu veux faire sur la feuille choisie
'Exemple avec ton code initial
With Sheets(ComboBox2.Value)
 If Me.TextBox1 <> "" Then
            LigneEnreg = Me.Enreg + 1
            If Me.CheckBox6.Value = True Then .Cells(LigneEnreg, 8) = "OUI"
            If Me.CheckBox6.Value = False Then .Cells(LigneEnreg, 8) = "NON"
            If Me.CheckBox6.Value = "" Then .Cells(LigneEnreg, 8) = ""
            If Me.CheckBox3.Value = True Then .Cells(LigneEnreg, 9) = "OUI"
            If Me.CheckBox3.Value = False Then .Cells(LigneEnreg, 9) = "NON"
            If Me.CheckBox3.Value = "" Then .Cells(LigneEnreg, 9) = ""
            If Me.CheckBox4.Value = True Then .Cells(LigneEnreg, 10) = "OUI"
            If Me.CheckBox4.Value = False Then .Cells(LigneEnreg, 10) = "NON"
            If Me.CheckBox4.Value = "" Then .Cells(LigneEnreg, 10) = ""
            If Me.CheckBox5.Value = True Then .Cells(LigneEnreg, 11) = "OUI"
            If Me.CheckBox5.Value = False Then .Cells(LigneEnreg, 11) = "NON"
            If Me.CheckBox5.Value = "" Then .Cells(LigneEnreg, 11) = ""
            .Cells(LigneEnreg, 1) = Me.TextBox1
            .Cells(LigneEnreg, 2) = Me.TextBox2
            .Cells(LigneEnreg, 3) = Me.TextBox3
            .Cells(LigneEnreg, 4) = Me.TextBox4
            .Cells(LigneEnreg, 6) = Me.TextBox5
            .Cells(LigneEnreg, 7) = Me.TextBox6
            .Cells(LigneEnreg, 12) = Me.TextBox8
            .Cells(LigneEnreg, 13) = Me.Chemin
      End If
End with
'Else
'Exit Sub
'End If
Me.Hide
End Sub

Donc il te reste juste à changer l'action de l'exemple par celle que tu veux faire.
(je te laisse faire les essais et ajustements nécessaires)

PS: Nous sommes là pour aider les demandeurs pas pour faire leur classeur à leur place.
quelqu'un peut me le faire ? promis que les prochain truc que je demande ont feras par etape mes la j'en est vraiment besoin le plus vite possible.
Il n'y aucune urgence ni obligation de résultat sur le forum
(cf la charte du forum)

PS: Essaies de faire un effort sur l'orthographe, stp.
 
Dernière édition:

cp4

XLDnaute Barbatruc
Bonsoir cp4

@cp4
benji1919 veut que les données saisies sur l'userform soient "injectées" dans la feuille choisie dans le ComboBox.

Mais il veut surtout qu'on lui ponde un classeur tout fait ;)
(Pour ce qui me concerne, je ne ponds pas ;) )
Salut JM;),

Bien vu, il pense qu'on est devin. Quoique j'ai fait un effort de déduction et je lui ai pondu un fichier.

Je n'ai pas pris son fichier car il est vide de données. Même pas l'effort de mettre quelques données bidons.

Plus que je l'ai fait, je le joins. Maintenant à toi de jouer. Il faut adapter à tes besoins.

Le clé en main sans explications claires, pas possible.

Bonne soirée.
 

Pièces jointes

  • ComboBoxFeuilles.xlsm
    22.9 KB · Affichages: 29

Noel Bedard

XLDnaute Occasionnel
je veux que pour le reste personne ne m'aide je vais trouver par moi même!

Bonjour à vous tous, belle journée aujourd'hui (du moins ici).

OK, j'en ai assez, ça durée beaucoup trop longtemps, je vais vous décevoir, mais moi je vais pondre.
Merci CP4 et Staple 1600, pour vos petits bouts de codes très bon pour moi.

Benji, je t'offre ton fichier et respecte la citation si-haut.

Bonne Soirée à vous tous
Noël
 

Pièces jointes

  • blio_Final.xlsm
    171.6 KB · Affichages: 33

Staple1600

XLDnaute Barbatruc
Re,

Merci CP4 et Staple 1600, pour vos petits bouts de codes très bon pour moi.
Bonne Soirée à vous tous
Noël

Un autre petit bout de code alors ;)
VB:
Private Sub B_Enregistrer_Click()
Dim i&
      If Me.TextBox1 <> "" Then
            LigneEnreg = Me.Enreg + 4
      With Sheets(ComboBox1.Value)
            For i = 7 To 10
              .Cells(LigneEnreg, i) = IIf(Me.Controls("CheckBox" & i - 6), "OUI", "NON")
            Next
      End With
    f.Range(f.Cells(LigneEnreg, 1), f.Cells(LigneEnreg, 5)) = Array(Me.TextBox1, Me.TextBox2, Me.TextBox3, Me.TextBox4, Me.TextBox5)
    If ActiveWorkbook.CodeName <> "Feuil3" Or ActiveWorkbook.CodeName <> "Feuil5" Or ActiveWorkbook.CodeName <> "Feuil18" Then f.Cells(LigneEnreg, 6) = Me.TextBox6
    f.Cells(LigneEnreg, 11) = Me.TextBox7
    f.Cells(LigneEnreg, 16) = Me.Chemin
    UserForm_Initialize
    End If
End Sub[code]

PS: J'ai testé ton écriture
Sub Test()
MsgBox ActiveWorkbook.CodeName
End Sub
Ce qui renvoie toujours ThisWorkBook (en tout cas chez moi)
Donc ce sera toujours <> de Feuil3, Feuil4 etc...
 

Noel Bedard

XLDnaute Occasionnel
Bonsoir Staple1600
Si vous regardez dans le userform3 enregistrer je l'ai utilisé:
Code:
Private Sub B_Enregistrer_Click()
Dim COL() As Variant, i As Integer
     If Me.TextBox1 <> "" Then
            LigneEnreg = Me.Enreg + 4
           With ComboBox1.Value
                     COL = Array(7, 8, 9, 10)
                     For i = 1 To 4
                             Cells(LigneEnreg, COL(i - 1)) = IIf(Me.Controls("CheckBox" & i), "OUI", "NON")
                     Next
            End With

Mais pourquoi que j'ai dû enlever le point en avant de Cells(Lign.......

par la suite je voulais utiliser cette même routine pour la lecture en inversant l'ordre source / destination,
pas de succès.

Merci beaucoup
Noël
 

Noel Bedard

XLDnaute Occasionnel
Bonjour
Re,
PS: J'ai testé ton écriture
Sub Test()
MsgBox ActiveWorkbook.CodeName
End Sub
Ce qui renvoie toujours ThisWorkBook (en tout cas chez moi)
Donc ce sera toujours <> de Feuil3, Feuil4 etc...[/code]
Vous parlez de ces lignes:
Code:
If f.CodeName <> "Feuil1" Then
  RngBD.Sort key1:=Application.Index(RngBD, 1, 1)
  End If

Sans cette condition le formulaire me retourne toujours une erreur en raison du tri pour cellules fusionnées dans la feuil1.
Je vais tester avec Msgbox encore merci.
 

Staple1600

XLDnaute Barbatruc
Re

Si vous regardez dans le userform3 enregistrer je l'ai utilisé:
C'est parce que je l'ai vu que j'ai proposé ce dernier bout de code où je m'affranchis du tableau COL
et où je place les valeurs des TextBox dans un Array
(cf code de mon précédent message)

Pour le reste, je parlais de cette ligne
VB:
 If ActiveWorkbook.CodeName <> "Feuil3" Or ActiveWorkbook.CodeName <> "Feuil5" Or ActiveWorkbook.CodeName <> "Feuil18" Then f.Cells(LigneEnreg, 6) = Me.TextBox6
 

Noel Bedard

XLDnaute Occasionnel
Oui c'est déjà fait, réduit à une seule ligne parfait, ça exactement c'est tournures de codes que je dois apprendre, sinon je m'étire en longueur sans fin.

Pourquoi qu'a la ligne Sheets(Combobox1.value), j'ai une erreur, je dois taper Combobox1.value ?

J'ajoute ceci après:
Ok, je crois que c'est parce que c'est un userform pas une feuille...;)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Dans ton classeur joint, tu utilises COL (comme dans mon exemple)
Or les numéros de colonnes sont désormais consécutifs d'où ma proposition (qui diffère de la tienne)
VB:
With Sheets(ComboBox1.Value)
            For i = 7 To 10
              .Cells(LigneEnreg, i) = IIf(Me.Controls("CheckBox" & i - 6), "OUI", "NON")
            Next
 

Discussions similaires

Réponses
5
Affichages
165

Statistiques des forums

Discussions
311 720
Messages
2 081 925
Membres
101 841
dernier inscrit
ferid87