Utilisation de listindex

Résolu/Fermé
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 - Modifié par max850 le 19/01/2016 à 23:18
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 - 27 janv. 2016 à 14:03
Bonjour,

j'ai une combobox contenant une 10aine d'éléments
en fonction de chaque élément je complète une textbox différente
la valeur de cette textbox étant placée dans une cellule d'une colonne différente
je ne voudrais pas répéter une 10aine de fois if ... then ... ci-dessous
et je pense que la combobox.listindex serait toute indiquée
mais je ne sais pas comment procéder pour la metttre en place
Pourriez vous m'aider merci
exemple la valeur "dépenses fonctionnement" sera toujours dans la colonne D cellule d2 ou d3 etc....

If ComboBox3.Value = "Dépenses fonctionnement" Then
Sheets("Journal").Range("D" & DernLigne).Value = TextBox7.Value
End If


25 réponses

Bonjour
voila un nouveau un fichier
http://www.cjoint.com/c/FAxnNzc6rWh
A+
Maurice
1
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
20 janv. 2016 à 08:52
Bonjour,

je pense que la combobox.listindex serait toute indiquée
Cette propriété du combobox te donnes la position de l'élément sélectionné, le premier étant zéro.
Tu peux aussi l'utiliser pour choisir ta textbox mais je n'ai pas nécessairement tout compris dans ton explication. Cela peut donner
Sheets("Journal").Cells(DernLigne, ComboBox3.listindex + 1 ).Value = Me.Controls("TextBox" & ComboBox3.listindex + 1).Value
0
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 3
20 janv. 2016 à 12:33
Bonjour gbinforme
en fait chaque élément de ma combobox correspond à une colonne de ma feuille excel et chaque fois que je compléte ma textbox après avoir sélectionnée mon élément la valeur de ma textbox s'inscrit dans la cellule
correspondant à la colonne concernée.
exemple l'élément "dépenses fonctionnement" correspond à la colonne D lorsque je sélectionne cet élément et complète ma textbox la valeur de cette textbox va s'inscrire dans la cellule D3 dernière cellule blanche
l'élément "dépenses fourniture" correspond à la colonne B de ma feuille la valeur de ma textbox va s'inscrire dans B4
est ce un peu plus clair ??

merci
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
20 janv. 2016 à 18:11
Bonjour max850,

Pour la colonne D ton listindex sera donc égal à 3, ce qui donne :
Sheets("Journal").Cells(Cells(Rows.Count, ComboBox3.listindex + 1 ).End(xlUp).Row + 1, ComboBox3.listindex + 1 ).Value = TextBox7.Value 

avec "
ComboBox3.listindex + 1 
" = 4 donc colonne D
et
Cells(Rows.Count, ComboBox3.listindex + 1 ).End(xlUp).Row + 1
dernière cellule blanche de la colonne D.
Si tu es sur la première valeur de ton combo (listindex = zéro) tu vas en colonne A.
0
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 3 > gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020
21 janv. 2016 à 01:11
bonsoir gbinforme

voici un exemple de ce que j'ai fait et qui fonctionne

Private Sub CommandButton2_Click()


With Sheets("Journal")

DernLigne = Cells.Find("*", , , , , xlPrevious).Row + 1

.Range("A" & DernLigne).Value = TextBox3.Value
.Range("B" & DernLigne).Value = TextBox4.Value
.Range("C" & DernLigne).Value = TextBox5.Value

If ComboBox3.Value = "Dépenses fonctionnement" Then
Sheets("Journal").Range("D" & DernLigne).Value = TextBox7.Value
End If
If ComboBox3.Value = "Autres dépenses" Then
Sheets("Journal").Range("G" & DernLigne).Value = TextBox7.Value
End If
If ComboBox3.Value = "Dépenses pour manif" Then
Sheets("Journal").Range("E" & DernLigne).Value = TextBox7.Value
End If

End With
End Sub

je n'ai utilisé que 3 élements de ma combobox
mais j'en aurai au moins 6
aussi il existe certainement une façon de procéder qui m'évite de mettre autant de if ... then que d'éléments de ma combobox dans ma procédure

j' aurais du commencer par 'envoyer cet exemple au lieu de mes explications biscornues

Désolé
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
21 janv. 2016 à 08:58
Bonjour,
Ma formule ne fonctionne pas ?
Si tu veut la dernière cellule blanche de la colonne A, tu mets :
Sheets("Journal").Cells(Cells(Rows.Count, "A" ).End(xlUp).Row + 1, ComboBox3.listindex + 1 ).Value = TextBox7.Value 
0
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 3 > gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020
21 janv. 2016 à 13:09
bonjour gbinforme
ce que je voudrais c'est que toutes les infos entrées dans le userform se trouvent sur la même ligne
sachant que les cellules des colonnes a b c seront toujours alimentées
parexemple
cellule
A5 XXXXX B5YYYYYY C5DDDDD les cellules des colonnes D ou E ou F seront alimentées sur même ligne 5 même si les cellules de ces colonnes étaient vides auparavant

merci
0
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 3 > max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020
21 janv. 2016 à 19:28
désolé gbinforme mais ça ne marche pas
je voudrais que la valeur de l'élément sélectionné dans la combobox (textbox7.value) s'inscrive à droite des données des cellules A B C de ma dernière ligne dans la cellule correspondante qui pourra être la cellule D E F ... en fonction de l'index de la combobox
ces cellules étant obligatoiremen vides

merci pour ta patience
il n'y a pas longtemps que je pratique VBA ceci explique cela
0
Bonjour

je pense a un truc comme ca
Private Sub CommandButton2_Click()
'4 = Index 0
'5 = Index 1
'7 = Index 2
NumCol = Array(4, 5, 7)
DernLigne = Cells.Find("*", , , , , xlPrevious).Row + 1
   With Sheets("Journal")
      .Range("A" & DernLigne).Value = TextBox3.Value
      .Range("B" & DernLigne).Value = TextBox4.Value
      .Range("C" & DernLigne).Value = TextBox5.Value
      .Cells(DernLigne, NumCol(ComboBox3.ListIndex)) = TextBox7.Value
   End With
End Sub

pour la suite sans ton fichier on ne peux rien faire
A+
Maurice
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 3
22 janv. 2016 à 10:53
Bonjour Maurice

Voici le lien pour accéder à mon fichier
qui n'est qu'une ébauche

http://www.cjoint.com/c/FAwjYktVQ1b

merci
0
Bonjour
ou se trouve l'onglet "Journal"
dans onglet "var" mettre dans la colonne G les numéro de colonne

A+
Maurice
0
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 3
22 janv. 2016 à 15:26
Maurice c'est journaldépense au lieu de journal
j'ai mis les numéros de colonnes à la place des textbox

https://www.cjoint.com/c/FAwow0qsSjb

merci
0
Bonjour
tes numéro sont pas bon tu a un problème de structure
ou alors j'ais rien compris

http://www.cjoint.com/c/FAwppNYBGRY

A+
Maurice
0
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 3
Modifié par max850 le 22/01/2016 à 23:01
Bonsoir Maurice
Qu'entends tu par numéro de colonne ?
est ce 1 pour la colonne A
2 pour la colonne B
etc .....
0
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 3
23 janv. 2016 à 15:52
Bon jour Maurice j'ai bien ta notification du 23 me
disant que j'avais un nouveau fichier

http://www.cjoint.com/c/FAxnNzc6rWh

mais je n'arrive pas à y accéder
0
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 3
23 janv. 2016 à 15:55
ca y est maintenant
en t'envoyant l info et en y ajoutant le lien
celuici passe en bleu et je peux y accéder

je dois partir maintenant
je te tien informé de la suite ce soir

merci
0
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 3 > max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020
23 janv. 2016 à 22:12
Maurice
j'ai maintenant un autre problème
lorsque j' ouvre ton fichier
et lance l'application j'ai le message d'erreur suivant

Impossible charger le objet car il n'est pas disponible sur cette machine

je peux visualiser le code
il y a une flêche bleue au niveau de tex=array(10, 9)
et elle ne va pas plus loin

j'utilise excel 2007 win8.1 64bits

quel objet serait manquant ?

je n'ai pas d'autre PC pour essayer

merci
0
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 3
25 janv. 2016 à 00:06
Bonsoir Maurice,

J'ai contourné le problème de "impossible de charger l'objet ...."
en décochant les lignes maquées "manquants" dans référence
et en rendant inactif DTPicker1
ce qui m'a permis d visualiser ton code

j'ai juste apporté un petit réajustement au niveau des numéros de colonnes
dans la feuille "var"

Tout est impec
je vais pouvoir poursuivre ..

Quand vous aurez le temps (toi, gbinform ou quelqu'un d'autre) pourrez vous m'indiquer comment résoudre ce problème d'objet manquant

merci beaucoup pour votre aide
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 425
Modifié par Le Pingou le 25/01/2016 à 11:47
Bonjour,
Juste au passage, sans savoir où et comment vous lancez l’application, il est impossible de vous aider concernant l’objet manquant...!
Vous dites :
"impossible de charger l'objet ...."
en décochant les lignes maquées "manquants" dans référence
et en rendant inactif DTPicker1

Eh bien il y a un texte qui précise ce qui manque…. !
Donc vous cherchez dans la suite de la liste la ligne qui correspond et vous la cochez.



Salutations.
Le Pingou
0
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 3
25 janv. 2016 à 12:21
Bonjour lePingou

"impossible charger le objet car il n'est pas disponible sur cette machine"


manquant : Microsoft windows common controls 60 (sp6)

manquant : Microsoft wind0ws common controls 60 (sp6)
chemin d'accès c:\WINDOWS\systems32\MSCOMCTL.OCX

et coché également
manquant : Microsoft windows common controls-2 60 (sp6)


j'ai trouvé ces fichiers mscomctl.ocx dans systems32
dans le répertoire systems32 dossiers:\dossier.ocx

j'ai regardé dans sysWOW64 et n'ai rien trouvé

"Donc vous cherchez dans la suite de la liste la ligne qui correspond "
je n'ai pas trouvé de DTPicker dans la suite de la liste

c'est pour cela que j'avais rendu DTPicker inactif dans la procédure
supposant que c'était cet objet qui était manquant
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 425
25 janv. 2016 à 12:35
Bonjour,
Je continue sur ce poste.
Avez-vous coché les 2 références Oui / Non. ?
Si Oui alors au lancement de votre application que recevez-vous comme erreur… ?

0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 425
25 janv. 2016 à 15:54
Bonjour,
Petit complément : vous ouvrez votre formulaire [Essai Compta] en mode création ensuite afficher la [Boite à outils] et clic droit et clic sur [Contrôles supplémentaires].
Dans la liste vous cherchez : Microsoft Date and Time Picker Control 6.0… le cocher et terminer par OK.

0
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 3
25 janv. 2016 à 21:23
Bonsoir Le Pingou
j'avais déjà fait ce que vous préconisez dans le petit complément.
j'avais les deux lignes que vous avez entourées de rouge, cochées et débutant
par "manquant:"
me doutant que mon problème pouvait venir de l'objet dtpicker
j'ai regardé si microsoft Date et time picker control figurait dans les controls supplémentaires pour éventuellement l'activer. je n'ai rien trouvé.
j'ai décoché les deux lignes et désactivé ce qui se rapportait au dtpicker dans Essai Compta : je n'avais plus de message d'erreur

Ensuite j'ai cherché dans Windows les fichiers correspondant à mscomctl.ocx

j'ai trouvé ces fichiers mscomctl.ocx dans le répertoire systems32 dossiers:\dossier.ocx

j'ai regardé aussi dans sysWOW64 et n'ai rien trouvé

voila où j'en suis
0
bonjour

Pour le dtpicker if faut ocx (mscomct2.ocx)
et a mettre dans c:\windows\systems32
et mscomctl.ocx ses pour faire les Listview

A+
Maurice
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 425
25 janv. 2016 à 22:34
Bonjour,
Essayez de le réaliser selon ce lien : https://support.microsoft.com/fr-fr/help/2676583

0
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 3
Modifié par max850 le 26/01/2016 à 00:45
me revoilà
j'ai cliqué sur votre lien
mais il est relatif à excel 2010
j'ai excel 2007 et apparemment pas les mêmes commandes
j'ai pu modifier le contrôle de compte utilisateur mais je n'ai pas pu allé plus
loin
je suis sous win 8.1 64 bits
0
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 3
26 janv. 2016 à 08:44
le fichier MSCOMCT2.OCX se trouve dans le dossier Dossier.ocx

C:\Windows\System32\Dossier .ocx
0
Le Pingou Messages postés 12041 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 22 avril 2024 1 425
26 janv. 2016 à 11:40
Bonjour,
Oui c’est 2010 mais la procédure est identique pour l’essentielle.
Cependant je vous précise que le fichier MSCOMCT2.OCX doit se trouver impérativement dans le répertoire c:\windows\systems32\ soit : c:\windows\systems32\mscomct2.ocx.

Je vous propose cette autre procédure :
Placer le fichier MSCOMCT2.OCX dans le répertoire C:\windows\System32
puis utilisez le menu Démarrer/Exécuter.
Saisissez ou collez: regsvr32 c:\windows\System32\MSCOMCT2.OCX
Cliquez sur le bouton Ok.

0