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 :

Incrémentation d'une colonne dans VBA Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2012
    Messages : 121
    Par défaut Incrémentation d'une colonne dans VBA Excel
    Bonjour

    Comme l'indique le titre je veux que mon programme VBA puisse changer de colonne automatiquement.
    L,objectif est de changer une valeur A1 en 1, A2 en 2, etc... et placer la valeur numérique dans une case plus loin à droite
    J'utilise les valeurs Ascii pour ce faire
    Voici ce que j'ai fait jusqu'à maintenant (je sais que mon code n'est pas élégant):

    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
    Dim A As Integer
    Dim B As Variant
    Dim C As Variant
    Dim W As Integer
    Dim X As Integer
    Private Sub CommandButton1_Click()
        A = 3
        W = 66
        X = 79
    For i = 1 To 12
        B = Chr(W)
        C = Chr(X)
        If Feuil3.Range(B & A).Value = "A1" Then
            Feuil3.Range(C & A).Value = 1
        ElseIf Feuil3.Range(B & A).Value = "A2" Then
            Feuil3.Range(C & A).Value = 2
        ElseIf Feuil3.Range(B & A).Value = "A3" Then
            Feuil3.Range(C & A).Value = 3
        ElseIf Feuil3.Range(B & A).Value = "A4" Then
            Feuil3.Range(C & A).Value = 4
        ElseIf Feuil3.Range(B & A).Value = "A5" Then
            Feuil3.Range(C & A).Value = 5
        ElseIf Feuil3.Range(B & A).Value = "A6" Then
            Feuil3.Range(C & A).Value = 6
        ElseIf Feuil3.Range(B & A).Value = "A7" Then
            Feuil3.Range(C & A).Value = 7
        ElseIf Feuil3.Range(B & A).Value = "A8" Then
            Feuil3.Range(C & A).Value = 8
        ElseIf Feuil3.Range(B & A).Value = "A9" Then
            Feuil3.Range(C & A).Value = 9
        ElseIf Feuil3.Range(B & A).Value = "A10" Then
            Feuil3.Range(C & A).Value = 10
        ElseIf Feuil3.Range(B & A).Value = "A11" Then
            Feuil3.Range(C & A).Value = 11
        ElseIf Feuil3.Range(B & A).Value = "A12" Then
            Feuil3.Range(C & A).Value = 12
        ElseIf Feuil3.Range(B & A).Value = "A13" Then
            Feuil3.Range(C & A).Value = 13
        ElseIf Feuil3.Range(B & A).Value = "A14" Then
            Feuil3.Range(C & A).Value = 14
        ElseIf Feuil3.Range(B & A).Value = "A15" Then
            Feuil3.Range(C & A).Value = 15
        ElseIf Feuil3.Range(B & A).Value = "A16" Then
            Feuil3.Range(C & A).Value = 16
        ElseIf Feuil3.Range(B & A).Value = "A17" Then
            Feuil3.Range(C & A).Value = 17
        ElseIf Feuil3.Range(B & A).Value = "A18" Then
            Feuil3.Range(C & A).Value = 18
    End If
       W = W + 1
       X = X + 1
    Next
    End Sub
    Mon programme fonctionne une seule fois, mais refuse d'effectuer la boucle pour recommencer avec les valeurs incrémentées.
    Qu'il y a t'il?
    Merci

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Bonjour,


    C'est étrange, tu fais une boucle For avec une variable i, mais que tu n'utilises nullepart dans ta boucle. Donc forcément, ça va tourner 12 fois, mais ça fera 12 fois la même chose.

    Ne comprenant rien à ce que tu veux faire (), je te laisse déjà corriger ce premier problème, qui va du coup peut-être te débloquer.
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2012
    Messages : 121
    Par défaut
    Merci pour votre réponse,

    En fait je veux que le programme s'exécute 12 fois. je croyais que la commande "for i = 1 to 12" était approprié pour faire comprendre à VBA d'exécuter 12 fois le programme.
    Quelle commande dois-je utiliser pour ça?

    Merci

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,

    Dis nous ce que tu veux faire avec ton utilisation de l'ascii et de la fonction chr ..cela nous aideras a t'aider...

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    je suis également perplexe sur ton souhait et la méthode que tu utilises

    ce que j'ai compris :

    - sur la ligne 3 de Feuil3 ... de la colonne B à la colonne M tu as des listes de chaines du type "A" + "Un Nombre"
    - tu veux récupérer le nombre et le mettre 13 colonnes plus loin (colonne O à Z) SI le nombre est compris entre 1 et 18

    si c'est bien ça, voici une proposition à probablement adapter, puisque je ne pense pas que le cas soit aussi simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub CommandButton1_Click()
        ' boucle sur 12 colonnes
        For i = 1 To 12
            ' Ligne 3 et colonne B à M
            With Feuil3.Cells(3, 1 + i)
                ' on exclu le premier caractère (qui est une lettre)
                ' et on regarde la valeur (le chiffre) de la suite des caractères
                ' si on est entre 1 et 18                                            ' on écrit ce chiffre 13 colonnes plus loin
                If Val(VBA.Mid(.Value, 2)) > 0 And Val(VBA.Mid(.Value, 2)) < 19 Then .Offset(0, 13).Value = Val(VBA.Mid(.Value, 2))
            End With
        Next i
    End Sub

  6. #6
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Le déplacement d'une colonne à une autre est bien plus facile avec l'objet "Cells" que "Range"

    Cells(N°ligne, N°colonne)

    on peut même y mettre des variables que l'on incrémente

Discussions similaires

  1. [XL-2007] Renommer les champs d'une colonne avec VBA excel
    Par FramanKalima dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/06/2015, 17h25
  2. [E-03] Integrer une requete Microsoft query dans VBA Excel
    Par Mimosa777 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 13/11/2008, 14h55
  3. Rechercher une valeur dans fichier Excel depuis VBA Access
    Par tribaleur dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/07/2008, 14h10
  4. [VBA] Somme de certaines valeurs d'une colonne dans une requete
    Par petitelalou dans le forum VBA Access
    Réponses: 7
    Dernier message: 01/08/2007, 00h18
  5. [VBA-Excel] copier plusieurs fois une colonne dans une feuille Excel
    Par ash_rmy dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 09/08/2006, 18h43

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