combobox et userform

  • Initiateur de la discussion Initiateur de la discussion Emmanuelle95
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

E

Emmanuelle95

Guest
Bonjour,

voici mon problème: j'ai sur une feuille2 de A63 à A210 une liste de postes.
A chacun est associé de M à AY des prix.

Sur une feuille 3, j'aimerais avoir dans ma colonne A (à partir de A4) une liste déroulante qui permette d'aller sélectionner un des postes de la feuille 2 et d'associer en face les prix correspondants.

J'aimerais que cela soit possible de la faire sur plusieurs lignes de ma feuille 3.
Et j'aimerais avoir les totaux des prix des postes que j'aurais sélectionner.

http://cjoint.com/?ehju5Kx30b voici le lien du fichier.

Merci d'avance.
 
Re : combobox et userform

Bonjour

La première étape est de "nommer" la zone de la feuille 2 de A63 à A210 (exemple Liste_Poste)

L'étape suivant est de sélectionner, sur la feuille Zonage 1, les cellules qui doivent être susceptible d'être remplis par ces poste, (par exemple, de A4 à A53) Puis d'ajouter une liste de validation (Données/Validation.../Liste/=Liste_Poste)

Le reste ne sera que rechercheV, condition de présence (si(A4<>""; ... ; "") , somme, ect....

Bon courage !

Olivier
 
Re : combobox et userform

Bonjour Emmanuelle95, Odesta,

A priori, on peut se passer avantageusement de UserForm ou ComboBox.

Voyez le fichier joint, avec en C4 de la feuille Zonage 1 cette unique formule :

Code:
=SI(ESTNA(EQUIV($A4;postes;0));"";INDEX('Feuil 2'!$M$63:$AY$210;EQUIV($A4;postes;0);EQUIV(INDEX($1:$1;COLONNE()-MOD(COLONNE()-[COLOR="Red"]3[/COLOR];4));'Feuil 2'!$M$60:$AY$60;0)+MOD(COLONNE()-[COLOR="red"]3[/COLOR];4)))

A tirer à droite et vers le bas, et à recopier sur toutes les entreprises.

Noter la plage nommée postes.

Noter aussi que le 3 dans la formule c'est la 1ère colonne du tableau.

Bien sûr mettre en colonne A la même liste de validation.

Pour les totaux, mettre des colonnes au début ou à la fin qui feront le calcul...

Le fichier sur cijoint.fr :



A+
 
Dernière édition:
Re : combobox et userform

Bonjour le fil, bonjour le forum,

Entièrement d'accord avec les formulistes, on peut se passer d'UserForm et de VBA et c'est même recommandé.
Toutefois, en pièce jointe, une version VBA car moi je ne sais pas faire autrement... Tu sélectionnes les postes dans la ComboBox1 (d'ailleurs une Listbox multiselect serait peut-être plus indiquée), tu en ajoutes autant que tu veux et tu termines par Exit pour avoir les totaux...
 

Pièces jointes

Re : combobox et userform

Re, salut Robert, beau travail VBA,

La formule que j'ai donnée se simplifie si dans les 2 feuilles les entreprises sont exactement les mêmes.

En C4 :

Code:
=SI(NB.SI(postes;$A4);RECHERCHEV($A4;'Feuil 2'!$A$63:$AY$210;[COLOR="Red"]10[/COLOR]+COLONNE();0);"")

10 c'est le décalage entre les colonnes C et M.

Cijoint.fr - Service gratuit de dépôt de fichiers

A+
 
Re : combobox et userform

merci à tous pour votre aide.

Par contre Robert, j'ai quelques petites questions.

J'ai essayé de réadapter ta macro à mon fichier complet.
Dans la feuille 2, la recherche doit uniquement se faire de A3 à A210, parce qu'après il y a encore des postes mais qui ne doivent pas être pris en compte.

Dans ma feuille "zonage1", je commence maintenant en A7.
Pour chaque poste, la recherche est faite de la colonne 2 à 51 dans la feuille 2.

J'ai du mal à comprendre la partie de ton code
Code:
For c = 3 To 41 'boucle sur les colonnes 3 à 41
        If (c - 2) Mod 4 <> 0 Then 'condition : si le reste de la division du (numéro de colonne - 2) par 4 n'est pas égale à zéro (multiple de 4)
            .Cells(dl + 2, c).Formula = "=SUM(" & .Cells(4, c).Address & ":" & .Cells(dl, c).Address & ")"


et à quoi sert le module 2:
Code:
ActiveCell.FormulaR1C1 = "=SUM(R[-4]C:R[-1]C)"
    Range("C9").Select



Je remets ma macro avec les variations:

Code:
Private Sub userform_initialize()
Dim cel As Range

With Sheets("feuil2")
    For Each cel In .Range("A63:A" & .Range("A210").Row)
    If cel.Value <> "" Then Me.ComboBox1.AddItem cel.Value
    Next cel
End With

With Sheets("zonage 1")
    If .Range("A7").Value <> "" Then
    .Range("A7:AO" & .Range("A65536").End(xlUp).Row).Clear
    End If
End With

End Sub

Private Sub ComboBox1_Change()
Dim r As Range
Dim dest As Range

With Sheets("feuil2").Range("A63:A" & Sheets("feuil2").Range("A210").Row)
    Set r = .Find(Me.ComboBox1, , xlValues, xlWhole)
End With

If Not r Is Nothing Then
    Set dest = Sheets("zonage 1").Range("A65536").End(xlUp).Offset(1, 0)
    r.Copy dest
    Range(r.Offset(0, 1), r.Offset(0, 50)).Copy
    dest.Offset(0, 1).PasteSpecial (xlPasteValues)
    End If
    
    
End Sub

Private Sub CommandButton1_Click()
Dim dl As Integer

With Sheets("zonage 1")
dl = .Range("A65536").End(xlUp).Row
.Cells(dl + 2, 1).Value = "TOTAL"
For c = 13 To 51
    If (c - 12) Mod 4 <> 0 Then
    .Cells(dl + 2, c).Formula = "=SUM(" & .Cells(4, c).Address & ":" & .Cells(dl, c).Address & ")"
    End If
Next c
End With
Unload Me
End Sub

quand je clique sur mon bouton, ça me met erreur d'exécution 9, ça surligne
Userform1.show
 
Re : combobox et userform

Bonjour le fil, bonjour le forum,

Emmanuelle, en pièce jointe ton fichier modifié. Chez moi il ne plante pas... L'erreur se trouve dans l'Initialisation de l'UserForm. Si tu as recopié le code dans un autre fichier, vérifie que le nom des onglets soit identique. J'ai noté que dans ton exemple il y avait un espace entre Feuil et 2 (Feuil 2). Sinon tu mets un point d'arrêt dans la macro lance devant Userform1.Show. Tu appuies sur le bouton, puis tu avance pas à pas avec la touche F8, tu verras alors précisément où se trouve l'erreur.

je viens de m'apercevoir que j'avais fait les totaux sut les 3 parties de chaque entreprise alors que ce n'était nécessaire que pour le prix (d'où le code avec le mod 4...). C'est corrigé...

Sinon le Module 2 ne sert à rien en effet...
 

Pièces jointes

Re : combobox et userform

l'erreur proviendrait de Private Sub UserForm_Initialize()

et plus particulièrement de With sheets("Feuil 2").

Mais je vois pas où est le souci
Ca me met l'indice n'appartient pas à la sélection.
 
Re : combobox et userform

Bonnour le fil, bonjour le forum,

Est-ce que c'est le fichier que je t'envoie en pièce jointe qui plante ou le tien dans lequel tu as recopié le code ???
Je pense que tu recopies le code sur un autre fichier. Dans mon post précédent (je me demande si tu l'as vraiment lu du coup !), je t'expliquais de vérifier que le nom de l'onglet dans ton fichier n'était pas Feuil2 (sans espace) alors que dans l'exemple de ton premier post il se nomme Feuil 2 (avec un espace)...

Si tel est le cas là, il faut modifier soit le nom de l'onglet Feuil2 par Feuil 2 (plus simple) soit le code de la macro en remplaçant partout Feuil 2 par Feuil2 (plus long). mais quoi qu'il en soit, il faut que l'onglet et le code soient identiques !!!
 
Re : combobox et userform

Bonjour Emmanuelle, bonjour le forum,

Est-ce que le fichier que je t'envoie plante, ou bien seulement le tien ?
Pourquoi ne pas faire un copier/coller ? Il est difficile de t'aider d'avantage car tu ne donnes que très peu d'indications...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
40
Affichages
2 K
Retour