Mayday:) afficher elements et nombres éléments colonne

Résolu
Dimasinteger Messages postés 6 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Voici mon probleme en exemple. Dans une colonne j'ai

3
73
45
56
99 (99 est un marqueur de fin)

J'aimerais réaliser un programme qui me permettrait d'
- afficher les valeurs de la colonne sur un ligne jusqu'au marqueur 99( non inclus). 3,73,45,56
- Afficher le nombre d éléments sans prendre en compte 99. Ici 4 éléménts
ça fait plus d'une semaine que je cherche Help me
Cordialement

4 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Un exemple
    https://www.cjoint.com/?3EjrPsBaoKG

    Cdlmnt
    0
    1. Dimasinteger Messages postés 6 Statut Membre
       
      Merci ça marche super bien !!!
      Par contre comme je suis un novice VBA j'aimerais te demander si il était possible.
      D'ecrire le programme en mode SUB et end sub et d'ecrire les commentaires VBA sur chaque ligne pour bien comprendre et m'initier à cette programmation.
      Est ce réalisable ?
      de plus j'essayais de réaliser ce programme avec la boucle While et Wend. J'etais à des années lumieres ?
      Cordialement
      0
    2. ccm81 Messages postés 11033 Statut Membre 2 434
       
      Public Sub OK()
      Dim li As Long, co As Long, coco As Long, lili As Long, cel As Range
      Set cel = ActiveCell ' recupere la cellule active
      li = cel.Row         ' ligne de la cellule active
      co = cel.Column      ' colonne de la cellule active
      coco = co + 1        ' colonne début transposition
      lili = li            ' ligne courante
      ' Tant que cells(lili,co) non vide et different de 99
      While Cells(lili, co) <> "" And Cells(lili, co) <> 99
         Cells(li, coco).Value = Cells(lili, co)  ' copie (lili,co) en (li,coco)
         lili = lili + 1                          ' ligne suivante pour lecture
         coco = coco + 1                          ' colonne suivante pour ecriture
      Wend
      End Sub

      Bonne suite en programmation
      0
    3. dimasinteger
       
      Je ne sais comment vous remercier.
      merci pour votre aide.
      Reste plus qu'a bosser un peu :)
      0
    4. dimasinteger
       
      Pour m'aguerir un peu j'essais de modifier un peu ton programme mais sans resultat:
      Admettons mes valeurs se trouvent en colonne 1 j'aimerais que le programme
      - Inscrit les valeurs lues en G1
      - Inscrit les nombres de valeurs en G2

      ccm81 j'ai essayé de modifier ton programme pour tenir compte des éléments cités au dessus mais sans resultat. Erreur 1004
      Suis je vraiment loin d'y aboutir ? il y a de l'idée ?

      Sheets(1).Range("pla").Clear

      Dim Ligne As Long, Lecture As String


      ' Tant que cells(ligne,1) non vide et different de 99
      While Cells(Ligne, 1) <> "" And Cells(Ligne, 1) <> 99
      Lecture = Lecture & Sheets(1).Cells(Ligne, 1).Value & ", "
      Ligne = Ligne + 1

      Wend
      Sheets(1).Cells(1, 7).Value = Lecture
      0
    5. ozone_ Messages postés 1823 Statut Membre 511
       
      Salut,
      Essaie quelque chose comme ceci.
      Sub classer()
          Dim i, j As Integer
          
          i = 1
          j = 7
          
          While Cells(i, 1) <> "" And Cells(i, 1) <> 99
             Cells(1, j) = Cells(i, 1)
             i = i + 1: j = j + 1
          Wend
          Cells(2, 7) = i - 1 & " valeurs"
      
      End Sub
      0
  2. ThauTheme Messages postés 1564 Statut Membre 160
     
    Bonjour Dimas, bonjour le forum,

    Afficher ???
    Peut-être comme ça :

    Sub Macro1()
    Dim O As Worksheet 'déclare lava raibel O (Onglet)
    Dim DL 'déclare la variable DL (Dernière ligne)
    Dim I As Integer 'déclare la variable I (Incrément)
    
    Set O = Sheets("Feuil1") 'définit l'onglet O (à adapter)
    DL = O.Cells(Rows.Count, 1).End(xlUp).Row - 1 'définit la variable DL
    For I = 1 To DL 'boucle de lignes 1 à DL
        L = IIf(L = "", O.Cells(I, 1).Value, L & ", " & Cells(I, 1).Value) 'définit la liste L
    Next I 'prochaine ligne de la boucle
    MsgBox L & Chr(13) & DL & " éléments." 'affiche la liste et le nombre
    End Sub
    

    0
    1. Dimasinteger Messages postés 6 Statut Membre
       
      FRanchement vous etes vraiment au top !! réactivité. ça fait plus d'une semaine que je passe des heures à chercher ce programme!! thank you so muchThauTheme.
      VBA est vraiment un outil puissant lorsqu'il est maitrisé.
      Si cela ne vous derange pas j'aurais plein de d'autre questions à vous poser un peu plus tard.
      Merci ThauTheme et CCM81
      0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour
    Cela peut se faire sans vba
    pour passer en horizontal: fonction transpose
    pour le nombre déléments sans 99 la fonction nb(lazone avec99)-1

    0
    1. Dimasinteger Messages postés 6 Statut Membre
       
      Bonsoir Michel
      Merci pour ta reponse mais le but est justement de m'initier à VBA qui reste encore très obsscur
      0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,
    Vraiment, je répète que ce problème se résoud par des formules :-((
    voir du coté copier-coller-collage spécial-transposition

    mais puisqu'il te faut absolument du VBA (sûr?)
    pas besoin de boucle....
    un code à adapter à ton contexte
    ici
    démarrage en A3
    restitution horizontale à partir de D2
    Nombre éléments avant 99 en D4
    Sub transposer_()
    Dim Fin99 As Byte, tampon

    Application.ScreenUpdating = False
    Fin99 = Columns("A").Find(what:=99, after:=Range("A2")).Row - 1
    tampon = Application.Transpose(Range("A3:A" & Fin99))
    Range("D2").Resize(1, UBound(tampon)) = tampon
    Range("D4") = UBound(tampon)
    End Sub


    Mais si tu veux les résultats sur une seule cellule
    Range("D2") = Join(tampon, ", ")
    Michel
    0
    1. Dimasinteger Messages postés 6 Statut Membre
       
      Re bonsoir Michel
      Il y a vraiment differentes manieres d'aboutir à un meme resultat.
      Michel tu dois etre très performant sur VBA mais j'ai pas du tout le niveau pour comprendre ce programme. Beaucoup de personnes m'ont dit qu'avec:
      DIM, IF,then,Else,Inpoutbox,Msgbox,While et When on pouvait réaliser beaucoup de programme. Néanmoins je garde ce programme pour le travailler un peu plus tard
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Bonjour
      j'ai pas du tout le niveau pour comprendre ce programme...
      tu pourrais pratiquement réaliser mon code avec l'enregistreur de macros en utilisant les fonctions Excel classiques que je t'ai indiqué donc sans connaitre VBA...
      DIM, IF,then,Else,Inpoutbox,Msgbox,While et When on pouvait réaliser beaucoup de programme
      ces personnes ont enfoncé une porte ouverte!
      seulement, il faut les utiliser que lorsqu' elles sont LA solution, ce qui n'est pas forcément le cas. en tout cas, méfie toi de ce genre de personnes qui croient tout savoir et le font savoir...
      cordialement

      EDIt: pour apprendre VBA
      https://excel.developpez.com/cours/
      0