IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Enregistrement des valeurs d'un tableau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 4
    Par défaut Enregistrement des valeurs d'un tableau
    Bonjour à tous,

    J'ai un tableau avec des valeurs numériques quelconque de A1 à A100 dans ma feuille 1. Je souhaiterais à l'aide de ma macro, attribuer un nom pour chaque valeur différente que je trouve en parcourant les valeurs dans cette colonne. Voilà le code que j'ai commencé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
        Dim valeur1 As Integer
        Dim valeur2 As Integer
        Dim valeur3 As Integer
        Dim valeur4 As Integer
        Dim valeur5 As Integer
        Dim valeur6 As Integer
        Dim valeur7 As Integer
        Dim valeur8 As Integer
        Dim valeur9 As Integer
        Dim valeur10 As Integer
        (il ne peut y a voir plus de 10 valeurs différentes dans la colonne)
     
        k = 1
     
     
        valeur1 = Sheets("Feuil1").Cells(1, 1).Value
     
     
        If Sheets("Feuil1").Cells(k, 1).Value <> valeur1 Then
     
        valeur2 = Sheets("Feuil1").Cells(k, 1).Value
     
        End If
     
     
        If Sheets("Feuil1").Cells(k, 1).Value <> valeur1 And Sheets("Feuil1").Cells(k, 1).Value <> valeur2 Then
     
        valeur3 = Sheets("Feuil1").Cells(k, 1).Value
     
        End If
     
        etc...


    Donc, la macro m'enregistre bien la première valeur de la colonne en tant que valeur1, ensuite la première valeur différente à valeur1 rencontrée est enregistrée en tant que valeur2, mais dès que il y a une troisième valeur différente, il m'enregistre celle-ci en tant que valeur2 et non pas valeur3. Je pense bien que le problème viens de ces deux lignes du code:

    valeur2 = Sheets("Feuil1").Cells(k, 1).Value

    valeur3 = Sheets("Feuil1").Cells(k, 1).Value

    mais je ne sais pas comment le dire autrement.

    J'espère avoir été clair et que quelqu'un pourra m'aider. Merci d'avance

  2. #2
    Membre chevronné Avatar de Bear the french
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations forums :
    Inscription : Mai 2012
    Messages : 352
    Par défaut
    Bonjour Kris12,

    Ton problème vient du fait que k ne s'incrémente pas.

    Même si je n'aurai pas du tout fait un code de cette manière, je t'ai corrigé un minima le tien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        k = 1
        valeur1 = Sheets("Feuil1").Cells(k, 1).Value
        k = k + 1
     
        If Sheets("Feuil1").Cells(k, 1).Value <> valeur1 Then
             valeur2 = Sheets("Feuil1").Cells(k, 1).Value
             k = k + 1
        End If
     
        If Sheets("Feuil1").Cells(k, 1).Value <> valeur1 And Sheets("Feuil1").Cells(k, 1).Value <> valeur2 Then
            valeur3 = Sheets("Feuil1").Cells(k, 1).Value
            k = k + 1
        End If
    Il conviendrait plutôt de faire une boucle (For i=1 to ...) pour parcourir la colonne et affecter les noms en fonction.

    Bertrand

  3. #3
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Tu peux utiliser une collection qui se prête bien à ce genre d'exercice
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Option Explicit
    Sub Test()
    Dim MaPlage As Range, Cel As Range
    Dim C As Collection
    Dim DerLig As Long, i As Long
    Dim Valeur()
    Dim Message As String
        Set C = New Collection
        On Error Resume Next
        With Worksheets("Feuil1")
            DerLig = .Range("A" & .Rows.Count).End(xlUp).Row
            Set MaPlage = .Range("A1:A" & DerLig)
            For Each Cel In MaPlage
                If Cel <> "" Then C.Add Cel, CStr(Cel)
            Next Cel
            On Error GoTo 0
            For i = 1 To C.Count
                Message = Message & "Valeur " & i & " : " & C.Item(i) & Chr(10)
            Next i
        End With
        MsgBox Message
        Set C = Nothing
    End Sub
    Cordialement.

  4. #4
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    tu peux utiliser un filtre avancé sans doublon, au niveau optimisation du code, il n'y a pas photo, ici je prend une plage de 13 cellules avec 2 doublons et 1 titre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Option Explicit
    Option Base 1 'impératif, cf aide VBA
     
    Sub Macro1()
    'Si le contexte s'y prête, une varaible tableau est bien plus souple que xx variables indicées....
    Dim tboVAleur(10) As Long 'ou autre / contexte
    Dim cell As Range
    Dim I As Byte
     
    I = 1
    Range("A1:A13").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
    ' Range("_FilterDataBase") = plage nommée (nom masqué) créée dès la mise en place d'un filtre.
    For Each cell In Range("_FilterDataBase").Offset(1, 0).Resize(Range("_FilterDataBase").Rows.Count - 1).SpecialCells(xlCellTypeVisible)
    'on ne tient pas compte de la ligne de titre, cf aide VBA à Resize
       tboVAleur(I) = cell.Value
       I = I + 1
    Next cell
        Stop 'voir dans fenêtre variables locales les valeurs de tboVAleur, et affecter selon besoin
    ActiveSheet.ShowAllData ' montre tout
    End Sub
    Cordialement,

    Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

    Didier

Discussions similaires

  1. [WD10] Afficher des valeurs dans un tableau
    Par dj-julio dans le forum WinDev
    Réponses: 4
    Dernier message: 19/03/2014, 11h32
  2. [Tableaux] récuperer des valeurs d un tableau
    Par student007 dans le forum Langage
    Réponses: 7
    Dernier message: 11/02/2006, 22h27
  3. [Tableaux]Ajouter des valeurs dans un tableau
    Par Antoine1183 dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 03/04/2005, 13h41
  4. [VB6] recuperer des valeurs ds un tableau html avec vb!!
    Par leo13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/12/2004, 13h02
  5. Décaler des valeurs dans un tableau
    Par sh2003 dans le forum Langage
    Réponses: 6
    Dernier message: 20/03/2004, 16h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo