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 :

Exporter des valeurs en fonction d'un nom


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 71
    Par défaut Exporter des valeurs en fonction d'un nom
    Bonjour à tous,
    Je fais face à un nouveau problème. J'ai une liste de nom en col B et une liste de prix en col C (toutes les lignes du classeurs sont rempli ==>65536).
    J'ai écris une macro qui était supossée aller me mettre chaque prix dans une second feuille en dessous du nom correspondant. Evidement, cela ne marche pas .
    Voici mon code: (PS: il y a un countif qui correspond au nombre de ligne existant pour chaque nom, ici j'ai en tout 8 noms (sur 8 colonnes).. Une idée?

    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
    34
    35
    36
    37
    38
    39
    40
    41
    Sub ImportPrice()
    
    Dim wsB As Worksheet
    Dim wsJ As Worksheet
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim nbre As Double
    Dim Cellule As Variant
    
    Set wsB = ThisWorkbook.Worksheets("Data")
    Set wsJ = ThisWorkbook.Worksheets("Price")
    
    
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '''''''''''''''''''''''Nombre de prix''''''''''''''''''''''
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    
    nbre = wsJ.Cells(1, Columns.Count).End(xlToLeft).Column
    
    For i = 1 To nbre
    wsJ.Cells(2, i).FormulaR1C1 = "=COUNTIF(prix,Price!R[-1]C)"
    Next i
    
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '''''''''''''''''''''''Prix par valeur''''''''''''''''''''''
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    
    For i = 1 To nbre
        For j = 3 To wsJ.Cells(2, i).Value
            For Each Cellule In wsB.Range("prix")<== ici le range va de B2:B65536
                
                If Cellule.Value = wsJ.Cells(1, i).Value Then
                    wsJ.Cells(, i).Value = Cellule.Offset(0, 1).Value
                End If
            Next Cellule
        Next j
    Next i
    
    
    End Sub

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 71
    Par défaut
    J'ai changé un peu mon code...malheureusement j'obtien le mm résultat...aucunes suggestions?



    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    Dim wsB As Worksheet
    Dim wsJ As Worksheet
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim nbre As Double
    Dim nbre2 As Double
    Dim CB As Double
    Dim Cellule As Variant
     
    Set wsB = ThisWorkbook.Worksheets("Data")
    Set wsJ = ThisWorkbook.Worksheets("Price")
     
     
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '''''''''''''''''''''''Nombre de prix''''''''''''''''''''''
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
    nbre = wsJ.Cells(1, Columns.Count).End(xlToLeft).Column
    nbre2 = wsB.Cells(Rows.Count, 1).End(xlUp).Row
    CB = nbre2
     
    For i = 1 To nbre
    wsJ.Cells(2, i).FormulaR1C1 = "=COUNTIF(prix,Price!R[-1]C)"
    Next i
     
    '''''''''''''''''''Numéro des ligne""""""""""""""""
    wsJ.Cells(3, 1).Value = 2
    wsJ.Cells(4, 1).Value = wsJ.Cells(2, 1).Value + 1
     
    For i = 2 To nbre
        Cells(4, i).Value = Cells(4, i - 1).Value + Cells(2, i).Value
    Next i
     
    For i = 2 To nbre
        wsJ.Cells(3, i).Value = wsJ.Cells(4, i - 1).Value + 1
    Next i
     
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '''''''''''''''''''''''Prix par valeur''''''''''''''''''''''
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    For i = 1 To nbre
       For j = 6 To wsJ.Cells(2, i).Value
            For k = wsJ.Cells(3, i).Value To wsJ.Cells(4, i).Value
     
                If wsB.Cells(k, 2).Value = wsJ.Cells(1, i).Value Then
                    wsJ.Cells(j, i).Value = wsB.Cells(k, 3).Value
                End If
            Next k
        Next j
    Next i
        """""""""""""""""""""un autre idée qui a marché uniquement pour la premiere colonne"""""""""""""""
     
    'wsJ.Cells(j, i).FormulaR1C1 = "=IF(data!R[-1]C[1]=Price!R1C,data!R[-1]C[2],"""")"
     
     
    End Sub
    Sub ImportPrice()

  3. #3
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    Je veux bien essayer de t'aider mais en décortiquant ton code, j'ai des incompréhensions donc il va falloir y aller pas à pas, déjà au début du code, tu écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To nbre
    wsJ.Cells(2, i).FormulaR1C1 = "=COUNTIF(prix,Price!R[-1]C)"
    Next i
    c'est quoi "prix" ?, une variable range ? un nom défini ? si c'est une variable, ou est'elle déclarée ?

    En admettant que ce soit effectivement un nom défini, pourquoi une boucle pour inserer une formule ?

    j'aurais écrit comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wsJ.Range("A2", wsJ.Cells(2, nbre).Address).FormulaR1C1 = "=COUNTIF(prix,Price!R[-1]C)"

    juste dessous, je décortique pour voir quelles cellules sont concernées

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    wsJ.Cells(3, 1).Value = 2
    wsJ.Cells(4, 1).Value = wsJ.Cells(2, 1).Value + 1
    je traduis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sheets("Price").range("A3") = 2
    sheets("Price").range("A4") = sheets("Price").range("A2") + 1
    en resumé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sheets("Price").range("A4") =' nbre de "A1" trouvé + 1
    et ça m'étonne, c'est bien ça ?
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

Discussions similaires

  1. [XL-2003] récupérer des valeurs en fonction de caractères
    Par doudou8mc dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/09/2009, 09h31
  2. Exporter des valeurs
    Par sky-mars dans le forum MATLAB
    Réponses: 12
    Dernier message: 23/07/2009, 16h49
  3. [Fortran 77] Importer et exporter des valeurs d'Excel
    Par arnaudsn dans le forum Fortran
    Réponses: 4
    Dernier message: 21/04/2008, 10h20
  4. [XSLT] Affichage des valeurs en fonction d'autres
    Par devlo2006 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 08/04/2008, 18h28
  5. Afficher des valeurs en fonction des données d'un champ
    Par Tchouk01 dans le forum VBA Access
    Réponses: 0
    Dernier message: 02/04/2008, 14h24

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