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 :

Problème arithmétique/ Suite de nombre sur différentes lignes


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    autre
    Inscrit en
    Décembre 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Décembre 2019
    Messages : 23
    Par défaut Problème arithmétique/ Suite de nombre sur différentes lignes
    Bonjour,

    je bloque sur un problème que je pense être plus arithmétique qu'informatique sur mon projet VBA. Je crois que je suis pas loin de la réponse, mais j'ai besoin d'un petit coup de pouce pour arrêter de m'arracher les cheveux.

    Mon programme génère un nombre X de tableaux sur la même feuille. Ces tableaux doivent être obligatoirement séparés par une ligne vide. Photo ci-dessous pour l'illustration:
    Nom : tableau vide.PNG
Affichages : 462
Taille : 31,1 Ko

    Mon but est d'arriver à remplir la deuxième ligne du tableau avec des nombre allant de 0 à Y, incrémentés de 500 à chaque fois. Une photo du résultat que je devrais avoir:
    Nom : tableau rempli.PNG
Affichages : 497
Taille : 36,8 Ko

    Avec deux boucles l'une dans l'autre, j'arrive à passer en revue chacune des cases qui m'intéresse, pour y appliquer la méthode .Value. Cependant, si j'arrive bien à incrémenter comme il faut la première ligne, je bloque sur la manière de remplir les suivantes (soit les lignes 11, 17, 23 et 29) pour que les valeurs des cases suivent les valeurs de la ligne précédente.

    Voici le bout de code que j'utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For y = 1 To nbtableau
    Ajout = y - 1
        For i = 0 To 15
            Cells(nbtableau * y + Ajout, i + 3).Value = i * 500
        Next
    Next
    Merci d'avance et joyeux noël

  2. #2
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 549
    Par défaut
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
    For L = 0 To 100 Step 6
        With ActiveSheet
            If L > 0 Then .Range("C5").Offset(L) = .Range("Q5").Offset(L - 6) + 500 Else .Range("C5").Offset(L) = 0
            .Range(.Cells(L + 5, "D"), .Cells(L + 5, "Q")).FormulaR1C1 = "=RC[-1]+500"
            .Range(.Cells(L + 5, "D"), .Cells(L + 5, "Q")).Value = .Range(.Cells(L + 5, "D"), .Cells(L + 5, "Q")).Value
        End With
    Next
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    autre
    Inscrit en
    Décembre 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Décembre 2019
    Messages : 23
    Par défaut
    Merci, je n'avais pas encore eu l'occasion d'utiliser If Else, c'est un bon moyen de m'y mettre.
    Bonne soirée

  4. #4
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 974
    Billets dans le blog
    2
    Par défaut
    Bonsoir,

    D'autre pistes : une facile à relire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim Lig As Long, Col As Long, Valo As Long
    Valo = 0
    For Lig = 5 To 29 Step 6
        For Col = 3 To 18
            Cells(Lig, Col).Value = Valo
            Valo = Valo + 500
        Next Col
    Next Lig
    une autre plus cryptique, parmi d'autres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim Lig As Long, Col As Long, Valo As Long, i As Long
    Valo = 0
    For i = 1 To 80
        Lig = ((i - 1) \ 16) * 6 + 5
        Col = (i - 1) Mod 16 + 3
        Cells(Lig, Col).Value = Valo
        Valo = Valo + 500
    Next i

  5. #5
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 549
    Par défaut
    Bonjour,
    (soit les lignes 11, 17, 23 et 29)
    5+6=11; 11+6=17; 17+6=23; 23+6=29.

    For L=5 to finTableau step 6 '(5,11,23,29)
    Tu reportes la valeur de (Q?-6) +500 à B?
    Ensuite tu appliques la la formule "=RC[-1]+500" à la plage C?:Q? Excel est plus rapide que VBA!

    range(cells(L,"C"),cells(L,"Q")).formular1c1="=RC[-1]+500"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/11/2012, 17h31
  2. Réponses: 2
    Dernier message: 22/07/2012, 12h44
  3. Suite arithmétique (Suite de nombre)
    Par thanmirt dans le forum Deski
    Réponses: 2
    Dernier message: 22/03/2011, 09h32
  4. [XL-2003] Suite arithmétique (Suite de nombre)
    Par thanmirt dans le forum Excel
    Réponses: 3
    Dernier message: 21/03/2011, 21h25
  5. Réponses: 6
    Dernier message: 02/07/2008, 12h24

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