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 :

Souci avec une boucle en changeant de colonne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Par défaut Souci avec une boucle en changeant de colonne
    Bonjour les amis,
    je suis entrain (j'essais) de bricoler un petit programme, et j'ai du mal sur une boucle, ce que je souhaiterais c'est que quand la copie arrive à la ligne 35,
    l'écriture se poursuive à la ligne 1 et colonne à droite,voici mon code utilisé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim i As Integer, x As Integer, y As Integer
    Dim num As Long
        num = 33
        x = 1
        y = 4
            For x = 1 To 223 'si 1 to 34 pas erreur
                Cells(x, y) = Chr(num) 'ligne ou l'erreur apparait (erreur execution 5), pour info : num =256 quand erreur
                    If x = 35 Then
                        y = y + 1
                    x = 1
                    End If
        num = num + 1
            Next x
    en gros j'ai l'erreur (erreur execution 5) dès que cela change de colonne mais le code va quand même jusque au bout, ce code est s'en doute pas très clair mais si quelqu'un pourrait m'aider à affiner.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    ne peut que générr une erreur si num > 255 !
    C'est une double boucle, qu'il te faut faire.

    E surtout, et de manière très GENERALE : ne jamais jouer avec le paramètre d'avancement du For !
    Cette ligne :
    sera acceptée, mais extrêmement maladroite dans une boucle

  3. #3
    Membre émérite Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Par défaut
    Bonjour Unparia,
    merci pour ta réponse, j'y avais pensé mais je n'arrive pas à la tourner comme il faut.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Et pourtant ...
    Mais je me suis entre-temps amusé à du plus rigolo, à coup de division entière et de modulos (juste pour me moquer de la fièvre idiote qui m'embête aujourd'hui)
    C'est bâclé (1er jus), mais tu peux t'en inspirer --->>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim coldeb As Integer, ligdeb As Integer, nb_par_col As Integer
    coldeb = 3
    ligdeb = 4
    nb_par_col = 34
     For i = 1 To 255
       Cells((i Mod nb_par_col) + 1 + ligdeb, (i \ nb_par_col) + 1 + coldeb).Value = Chr(i)
     Next
    Tu vas vite comprendre.
    Amitiés

  5. #5
    Membre émérite Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Par défaut
    L'idée est bien, même très bien mais là on reste sur un calcul et admettons que l'on veuille décaler d'une colonne de plus pour insérer des choses par la suite ça ne convient plus
    c'est pour ça que j'avait l'idée de la boucle c'est plus facile à gérer (quand on y arrive bien sur).
    Pourtant mon code fonctionne, il y a juste cette erreur qui surgit
    merci encore

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Le code que je t'ai montré est adaptable à tout et paramétrable
    Mais si tu en veux un avec une double boucle, en voilà un (il sera plus lent) --->>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim coldeb As Integer, ligdeb As Integer, nb_par_col As Integer
    coldeb = 3
    ligdeb = 4
    nb_par_col = 34
    no = 1
     For col = 1 To 255 \ nb_par_col + 1
       For lig = 1 To nb_par_col
         Cells(lig + ligdeb - 1, col + coldeb - 1) = Chr(no)
         no = no + 1
         If no > 255 Then Exit For
       Next
     Next
    EDIT : je peux également corriger ton propre code (facile) si tu y tiens. Et il fonctionnera. Mais je serai bien le dernier (j'insiste) à encourager une modification, au sein de la boucle, du paramètre directeur de la boucle.
    Mais si tu y tiens vraiment --->> dis-le et je le ferai ... (à grand contre-ceur, mais je le ferai ...)

    Amitiés

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

Discussions similaires

  1. [Toutes versions] Modifier la formule d'une colonne en fonction d'une autre avec une boucle
    Par captaincss dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/07/2014, 19h20
  2. [AC-2003] Souci avec une boucle Do While à Loop
    Par Plume27 dans le forum VBA Access
    Réponses: 9
    Dernier message: 23/08/2012, 17h59
  3. [PHP 5.2] [PHP-JS] petit souci avec une boucle simple
    Par gtraxx dans le forum Langage
    Réponses: 2
    Dernier message: 05/02/2009, 16h26
  4. soucis avec une boucle
    Par yahi.jye dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/09/2008, 15h05
  5. [VBA-E]Petit souci avec une boucle
    Par Mou dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 17/04/2007, 16h15

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