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 :

Copier une valeur dans une autre feuille en fonction de la lettre dans la case accolée VBA excel 2013


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Programmeur à mes heures perdues !
    Inscrit en
    Septembre 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Programmeur à mes heures perdues !
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 17
    Par défaut Copier une valeur dans une autre feuille en fonction de la lettre dans la case accolée VBA excel 2013
    Bonsoir,
    Je me permet de poster ce message car j'aimerai creer un programme VBA qui me permettrait depuis un fichier nommé "Saisie" de rentrer un montant et sur la colonne suivante une lettre allant de "A" à "O" puis en fonction de cette lettre copier dans une seconde feuille nommée "Centralisation" le montant en fonction de la lettre par exemple pour A copier dans la colonne A de mon fichier Centralisation le montant corespondant a la lettre A dans mon fichier Saisie.
    Voila le code que j'ai essayé de bricoler mais qui malheureusement ne fonctionne pas
    Merci d'avance
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    Sub Centralisation()
    Dim numCell As Double
    Dim numCell2 As Double
    numCell2 = 3
    numCell = 4
    Do While Cells(numCell, 5) <> ""
    Select Case Cells(numCell, 5)
        Case "A"
            numCell = numCell + 1
            Cells(numCell, 4).Select
            Selection.Copy
            Sheets("Centralisation").Select
            Cells(numCell2, 1).Select
            ActiveSheet.Paste
        Case "B"
        numCell = numCell + 1
            Cells(numCell, 4).Select
            Selection.Copy
            Sheets("Centralisation").Select
            Cells(numCell2, 2).Select
            ActiveSheet.Paste
        Case "C"
        numCell = numCell + 1
            Cells(numCell, 4).Select
            Selection.Copy
            Sheets("Centralisation").Select
            Cells(numCell2, numCell2).Select
            ActiveSheet.Paste
        Case "D"
        numCell = numCell + 1
            Cells(numCell, 4).Select
            Selection.Copy
            Sheets("Centralisation").Select
            Cells(numCell2, 4).Select
            ActiveSheet.Paste
        Case "E"
        numCell = numCell + 1
            Cells(numCell, 4).Select
            Selection.Copy
            Sheets("Centralisation").Select
            Cells(numCell2, 5).Select
            ActiveSheet.Paste
        Case "F"
        numCell = numCell + 1
            Cells(numCell, 4).Select
            Selection.Copy
            Sheets("Centralisation").Select
            Cells(numCell2, 6).Select
            ActiveSheet.Paste
        Case "G"
        numCell = numCell + 1
            Cells(numCell, 4).Select
            Selection.Copy
            Sheets("Centralisation").Select
            Cells(numCell2, 7).Select
            ActiveSheet.Paste
        Case "H"
        numCell = numCell + 1
            Cells(numCell, 4).Select
            Selection.Copy
            Sheets("Centralisation").Select
            Cells(numCell2, 8).Select
            ActiveSheet.Paste
        Case "I"
        numCell = numCell + 1
            Cells(numCell, 4).Select
            Selection.Copy
            Sheets("Centralisation").Select
            Cells(numCell2, 9).Select
            ActiveSheet.Paste
        Case "J"
        numCell = numCell + 1
            Cells(numCell, 4).Select
            Selection.Copy
            Sheets("Centralisation").Select
            Cells(numCell2, 10).Select
            ActiveSheet.Paste
        Case "K"
        numCell = numCell + 1
            Cells(numCell, 4).Select
            Selection.Copy
            Sheets("Centralisation").Select
            Cells(numCell2, 11).Select
            ActiveSheet.Paste
        Case "L"
        numCell = numCell + 1
            Cells(numCell, 4).Select
            Selection.Copy
            Sheets("Centralisation").Select
            Cells(numCell2, 12).Select
            ActiveSheet.Paste
        Case "M"
        numCell = numCell + 1
            Cells(numCell, 4).Select
            Selection.Copy
            Sheets("Centralisation").Select
            Cells(numCell2, 13).Select
            ActiveSheet.Paste
        Case "N"
        numCell = numCell + 1
            Cells(numCell, 4).Select
            Selection.Copy
            Sheets("Centralisation").Select
            Cells(numCell2, 14).Select
            ActiveSheet.Paste
        Case "O"
        numCell = numCell + 1
            Cells(numCell, 4).Select
            Selection.Copy
            Sheets("Centralisation").Select
            Cells(numCell2, 15).Select
            ActiveSheet.Paste
     
     End Select
    Loop
    End Sub

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Centralisation").Cells(numCell2, 1).Offset(, Asc(Cells(numCell, 5)) - 65) = Cells(numCell, 4)
    eric

  3. #3
    Membre actif
    Homme Profil pro
    Programmeur à mes heures perdues !
    Inscrit en
    Septembre 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Programmeur à mes heures perdues !
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 17
    Par défaut
    Citation Envoyé par eriiic Voir le message
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Centralisation").Cells(numCell2, 1).Offset(, Asc(Cells(numCell, 5)) - 65) = Cells(numCell, 4)
    eric
    Bonjour Eric,
    Tout d'abord merci pour ta réponse, ensuite peux tu m'expliquer un minimum ton code parce que je ne vois pas bien comment il fait pour savoir quelle lettre est inscrite ou alors c'est juste un morceau de code ?
    Merci pour tes explications !

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    je pige pas tres bien le "-65" mais bon si ce n'est que la valeur de la cellule ne corespond pas a sa colonne

    mais peut etre que ceci t'aidera a comprendre les outis de convertion que tu a dispo (chr()) et (asc)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub testx()
    MsgBox "la colonne 1 en lettre c'est la " & Chr([A1].Column + 64)
    MsgBox "la colonne ""A"" c'est la " & Asc([A1].Column) - 48
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre actif
    Homme Profil pro
    Programmeur à mes heures perdues !
    Inscrit en
    Septembre 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Programmeur à mes heures perdues !
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 17
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    Bonjour
    je pige pas tres bien le "-65" mais bon si ce n'est que la valeur de la cellule ne corespond pas a sa colonne

    mais peut etre que ceci t'aidera a comprendre les outis de convertion que tu a dispo (chr()) et (asc)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub testx()
    MsgBox "la colonne 1 en lettre c'est la " & Chr([A1].Column + 64)
    MsgBox "la colonne ""A"" c'est la " & Asc([A1].Column) - 48
    End Sub
    Merci pour ta réponse, je ne comprends toujours pas le + 64 et - 48 donc si tu peux m'éclairer ca m'aiderai beaucoup ! ensuite je me pose une autre question comment je peux faire pour l'incrémenter dans mon code !
    Merci de votre aide

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Chaque lettre a un code ASCII. A=65, B=66, etc
    .Offset(x, y) te crée un décalage de x ligne, y colonnes de ta référence.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Offset(, Asc(Cells(numCell, 5)) - 65)
    te fera donc un décalage de 0 colonne pour A, 1 colonne pour B, etc de la référence choisie : Cells(numCell2, 1)
    eric

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. [XL-2007] Récupérer valeurs d'une colonne vers une liste déroulante sur autre colonne d'une nouvelle feuille
    Par redhotchilipeppers dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/07/2014, 17h26
  3. Réponses: 4
    Dernier message: 17/04/2013, 11h46
  4. [WD16] Lecture donnée d'une base dans une valeur d'une autre base
    Par gef13 dans le forum WinDev
    Réponses: 2
    Dernier message: 16/11/2011, 09h05
  5. Réponses: 4
    Dernier message: 11/09/2006, 17h58

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