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 :

Décalage automatique de zone de collage


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2008
    Messages : 150
    Par défaut Décalage automatique de zone de collage
    Bonjour!!!

    Je souhaite créer une macro qui me permette de tester si une cellule est utilisée, et au quel cas ma zone de collage se décale de 4 cellules vers la droite. voici le bout de code que je ne parviens pas à faire fonctionner.

    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
    Dim repere As String
     
    Sheets("Archivage").Select
    If Range("k4") = "" Then
    repere = "j7"
    Else: repere = Range("k4").ActiveCell.adress
    repere = Range(repere).Offset(0, 4)
    End If
     
    Sheets("TdP").Select
    Range("DATE2").Select
        Selection.Copy
        Sheets("Archivage").Select
        If (Range(repere).Value = "") Then
        Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
            :=False, Transpose:=False
        Else: Range(repere).Offset(0, 4).Select
        Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
            :=False, Transpose:=False
        End If
    Merci d'avance!

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Je remet ton code avec quelques commentaires
    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
    Dim repere As String
     
    Sheets("Archivage").Select
    If Range("k4") = "" Then
    repere = "j7" '<-- repere = Range("j7").Address
    Else
    ' là je comprend pas ce qu'on veut faire ?
    repere = Range("k4").ActiveCell.adress '<-- soit repere = Range("k4").Address
    repere = Range(repere).Offset(0, 4)' '<-- soit repere = Range("j7").Offset(0, 4).Address
    End If
     
    Sheets("TdP").Select
    Range("DATE2").Select
        Selection.Copy
        Sheets("Archivage").Select
        If (Range(repere).Value = "") Then '<-- If Range(repere).Value = "" Then
        Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
            :=False, Transpose:=False
        Else: Range(repere).Offset(0, 4).Select '<-- encore un décalage de 4 colonnes ?
        Selection.PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks _
            :=False, Transpose:=False
        End If
    Voici un 1er jet

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2008
    Messages : 150
    Par défaut merci d'avoir répondu
    Voila un code plus concis.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test()
     
    Dim repere As String
     
    Sheets("feuil1").Select
        If Range("k4") = "" Then
            repere = "j7"
        Else: repere = Range("k4").Address
            repere = Range(repere).Offset(0, 4)
        End If
     
    Range("k4").Value = repere
     
    End Sub
    En fait k4 est une cellule repère. Elle doit prendre comme valeur l'adresse de "repere".
    Ainsi à chaque fois qu'on lance la macro, repere se décale de 4 colonnes vers la droite. je suis tout perdu!

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2008
    Messages : 150
    Par défaut
    je me rends compte que je ne suis pas très clair!!

    k4 est une cellule référence.
    repere est initialement j7
    ca ira mieux dis comme ca je pense

  5. #5
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    ici y a un os
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Else: repere = Range("k4").Address
            repere = Range(repere).Offset(0, 4)
    en clair tu dis
    sinon :
    repere = "k4"
    repere = range("k4").offset(0, 4)....là repere prend la valeur de la cellule O4, c'est ce que tu souhaites ? Ou repere doit prendre l'adresse de la cellule O4 ?

  6. #6
    Membre chevronné
    Inscrit en
    Janvier 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 483
    Par défaut
    Bonjour
    essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test1()
     If Range("K4").Value = "" Then
        Range("K4") = Range("K4").Offset(3, -1).Address
          Else
           Range("K4") = Range(Range("K4").Value).Offset(3, -1).Address
      End If
    End Sub
    Bonne journnée

    Abed_H

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

Discussions similaires

  1. Etendre automatiquement la zone de données d'un TCD
    Par Tifendro dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 06/01/2008, 19h19
  2. Remplissage automatique de zone de texte
    Par missastro dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/08/2007, 17h39
  3. [VBA]Décalage dans une zone de liste
    Par pepper18 dans le forum IHM
    Réponses: 1
    Dernier message: 23/04/2007, 13h44
  4. [VBA-E] - Excel- A juster automatiquement une zone d'impression
    Par nkhalidy dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/03/2007, 18h05
  5. Réponses: 1
    Dernier message: 17/10/2006, 17h37

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