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 :

Excel VBA - Décaler une cellule d'une colonne à une autre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 9
    Par défaut Excel VBA - Décaler une cellule d'une colonne à une autre
    Bonjour à tous !

    Dans l'un des fichiers que je crée j'ai un petit souci. C'est pour créer un BOM et dans une colonne, j'ai des chiffres allant de 1 à x, ils désignent le level. J'ai déjà crée un code qui créer un nombre de colonne équivalent au chiffre maximum qui se trouve dans cette colonne.
    J'aimerais maintenant un code qui puisse décaler la cellule sur la gauche mais suivant la valeur de ce chiffre. Je m'explique, pour un 1 faudrait le décaler à la première colonne, pour 3, la 3ème etc...
    Quelqu'un aurait-il une idée d'une fonction dans VBA ?

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Voir range.offset

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 9
    Par défaut
    J'ai essayé avec ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim v As Integer
    v = Range("F2").value
    Range("F2").Select
    ActiveCell.Offset(columnOffset:=-(a - v)).Activate
    Mais la page que tu m'a donné c'est pour décaler mais seulement la sélection de cellule, mais ça ne décale pas la cellule elle-même non ?

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Dans 99,9999999999999999999999999999999999999999999999 % des cas c'est complètement inutile de sélectionner ou activer une cellule avant de l'utiliser.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Offset(columnOffset:=-(a - v)).Activate
    ne marchera jamais.

    Supposons que tu sois en A10

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    activecell.offset(0,-10) = 32
    va mettre 32 dans a1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    activecell.offset(0,10) = 32
    va mettre 32 dans a20

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    activecell.offset(10,10) = 32
    va mettre 32 dans k20

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 9
    Par défaut
    ClementMarcotte J'ai essayé de faire plus simple avec ce code la

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For i = 2 To nbcells
        Dim v As Integer
        v = Cells(i, 1).value
            If v > 1 Then
                Cells(i, 1).value = Cells(i, v).value              ' Copie vers la nouvelle destination
                Range("A" & i).Clear
    End If
    Next
    Le problème c'est que ça me clear bien tout ce qui au-dessus de 1 mais ça ne met pas les valeurs dans les cellules désirées.

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 9
    Par défaut
    C'est bon j'ai réussi à trouver l'erreur.
    Si cela peut aider quelqu'un voici le code que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For i = 2 To nbcells
        Dim v As Integer
        v = Cells(i, 1).value
            If v > 1 Then
                Cells(i, 1).Copy Cells(i, v)             ' Copie vers la nouvelle destination
                Range("A" & i).Clear
    End If
    Next

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/06/2018, 13h54
  2. Réponses: 3
    Dernier message: 10/10/2013, 11h11
  3. Réponses: 6
    Dernier message: 05/08/2013, 21h57
  4. Réponses: 2
    Dernier message: 05/03/2010, 14h15
  5. Réponses: 3
    Dernier message: 03/11/2008, 16h07

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