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 :

Parcourir les cellules....


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 6
    Par défaut Parcourir les cellules....
    Bonjour,
    Je préfère commencer par dire que c'est ma toute première macro, et donc je m'inspire de ce que je peux trouver sur ce site.
    Je cherche à faire quelque chose de très simple :

    Sur la première page, j'ai 2 colonnes contenant des valeurs numériques :
    - 0, 10, 30 par exemple pour la 1ere
    - et 100, 60, 40 pour la 2e.

    je cherche à générer une colonne sur la 2e page qui étalonnerait ces valeurs en considérant un incrément (
    - inc=0.5 par exemple pour la première,
    - et l'incrément pour la 2e colonne dépend des valeurs de la première :

    cela donnerait pour la première colonne de la 2e page :
    - 0, 0.5, 1.0, ... 9.5, 10.0, 10.5, .... 30.0

    pour la 2e colonne, je veux considérer
    - (pour i=0 à 10) inc2 = (60-100) / 0.5
    - (pour i=10 à 30) inc2 = (40-60) / 0.5
    C'est une sorte d'étalonnage en considérant une évolution linéaire entre 2 points.

    Voici ce que j'ai essayé d'implémenter en m'inspirant de ce qui est au dessus, mais j'ai une erreur sur le i+1 dans la boucle !? (l'indice n'appartient pas à la sélection...)

    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
    Sub subTest()
     
    Dim frequency As Long 'équivalent à 1/inc1 (inc1 est en fait la période)
    Dim tab11 As Variant '1ere page, 1ere colonne 
    Dim tab12 As Variant '1ere page, 2eme colonne
    Dim i As Long 'indice pour la 1ere page
    Dim lTotal As Long 'nombre de lignes (1ere page)
    Dim j As Long 'indice pour la 2e page
    Dim jDebut As Long 'indice pour chaque début 2eme page
    Dim jFin As Long 'indice pour chaque fin 2eme page
    Dim inc As Long '
    Dim tab21 As Variant '2e page colonne 1
    Dim tab22 As Variant '2e page colonne 2
     
    frequency = 2 'period = 0.5
     
    'effacer le contenu des colonnes A, B, C et D dans feuille2
    ThisWorkbook.Worksheets(2).Range("A:B").Clear
     
    'rechercher la ligne de la dernière valeur colonne 1 feuille 1
    lTotal = ThisWorkbook.Worksheets(1).Range("A" & Application.Rows.Count).End(xlUp).Row
     
    'charger les tableaux
    tab11 = ThisWorkbook.Worksheets(1).Range("A1:A" & lTotal).Value
    tab12 = ThisWorkbook.Worksheets(1).Range("B1:B" & lTotal).Value
     
    For i = 1 To lTotal - 1
        jDebut = tab11(i) * frequency
        jFin = tab11(i + 1) * frequency
        inc = (tab12(i + 1) - tab12(i)) * frequency
        tab21(jDebut) = tab11(i)
        tab22(jDebut) = tab12(i)
        For j = jDebut To jFin
            tab21(j+1) = tab21(j) + (1 / frequency)
            tab22(j+1) = tab22(j) + inc
        Next j
    Next i
     
    ThisWorkbook.Worksheets(2).Range("A1:A").Value = tab21
    ThisWorkbook.Worksheets(2).Range("B1:B").Value = tab22
     
    End Sub
    Merci d'avance si vous pouvez m'éclairer !
    De plus, une solution à la macro me ferait gagner du temps...

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 60
    Par défaut
    Salut,

    Essaie de faire un MsgBox tab11 et pareil pour tab12 juste après leurs affectations, pour voir si c'est deux variables sont bien des tableau de valeurs ou juste la valeur de la dernière cellule. A partir de là tu devrais savoir si tab11(i+1) est possible ou non. Je m'explique, si il s'agit d'une variable le tab11(i + 1) n'est pas possible, d'où une erreur.

Discussions similaires

  1. [Débutant] Parcourir les éléments d'une cellule avec une boucle
    Par mortal dans le forum MATLAB
    Réponses: 1
    Dernier message: 15/10/2014, 08h36
  2. [XL-2010] Problème de luxe urgent : parcourir les cellules
    Par Matrixmax dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/03/2013, 16h30
  3. [XL-2007] parcourir les cellules d'une colonne à l'aide d'un index
    Par jolinon dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/04/2009, 17h55
  4. Réponses: 2
    Dernier message: 05/08/2008, 16h41
  5. [CR9] Colorier les cellules d'un tableau croisé
    Par Koko22 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 14/11/2003, 16h57

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