Utilisation de listindex

Résolu
max850 Messages postés 312 Statut Membre -  
Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  • 1
  • 2
  1. Maurice
     
    Bonjour
    voila un nouveau un fichier
    http://www.cjoint.com/c/FAxnNzc6rWh
    A+
    Maurice
    1
  2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  3. max850 Messages postés 312 Statut Membre 3
     
    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
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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
    2. max850 Messages postés 312 Statut Membre 3 > gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention  
       
      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
    3. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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
    4. max850 Messages postés 312 Statut Membre 3 > gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention  
       
      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
    5. max850 Messages postés 312 Statut Membre 3 > max850 Messages postés 312 Statut Membre
       
      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
  4. Maurice
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. max850 Messages postés 312 Statut Membre 3
     
    Bonjour Maurice

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

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

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

    A+
    Maurice
    0
  8. Maurice
     
    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
  9. max850 Messages postés 312 Statut Membre 3
     
    Bonsoir Maurice
    Qu'entends tu par numéro de colonne ?
    est ce 1 pour la colonne A
    2 pour la colonne B
    etc .....
    0
  10. max850 Messages postés 312 Statut Membre 3
     
    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
    1. max850 Messages postés 312 Statut Membre 3
       
      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
      1. max850 Messages postés 312 Statut Membre 3 > max850 Messages postés 312 Statut Membre
         
        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
  11. max850 Messages postés 312 Statut Membre 3
     
    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
  12. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    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
  13. max850 Messages postés 312 Statut Membre 3
     
    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
  14. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    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
  15. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    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
  16. max850 Messages postés 312 Statut Membre 3
     
    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
  17. Maurice
     
    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
  18. max850 Messages postés 312 Statut Membre 3
     
    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
    1. max850 Messages postés 312 Statut Membre 3
       
      le fichier MSCOMCT2.OCX se trouve dans le dossier Dossier.ocx

      C:\Windows\System32\Dossier .ocx
      0
  19. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    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
  • 1
  • 2