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 :

Se placer sur un tableau Excel, sous conditions


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2018
    Messages : 6
    Par défaut Se placer sur un tableau Excel, sous conditions
    Bonjour à tous,

    Je suis sur VBA et j'ai un petit soucis.

    J'ai mis en place une macro qui permet de :
    -Ajouter une ligne (jusqu'ici rien d'extra-ordinaire)
    -Puis de recopier les formules situé au dessus de cette ligne.

    J'aimerai faire en sorte qu'en fonction de la ligne choisie, (pour ajouter une nouvelle ligne) la macro place l'utilisateur sur cette ligne choisie à la fin de la macro

    J'aimerai que si on veut ajouter une ligne au milieu, on se retrouve au milieu, si l'on ajoute une ligne en haut du tableau, on se retrouve en haut du tableau...

    Voici ma macro :

    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
    Sub Bouton_ajout()
     
    'Ajout d'une ligne supplémentaire
     
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
     
     
    'Tirer la formule vers le bas "Analysis"
     
     
        Range("Test_1").Select
        Selection.AutoFill Destination:=Range("Analysis"), Type:=xlFillDefault
     
     
    'Tirer la formule vers le bas "Quotation"
        Range("Test_2").Select
        Selection.AutoFill Destination:=Range("Quotation"), Type:=xlFillDefault
     
     
     
    'Tirer la formule vers le bas "Final_preparation"
        Range("Test_3").Select
        Selection.AutoFill Destination:=Range("Final_Preparation"), Type:=xlFillDefault
     
     
    'Tirer la formule vers le bas "Old_supplier"
        Range("Test_4").Select
        Selection.AutoFill Destination:=Range("Old_supplier"), Type:=xlFillDefault
     
     
    'Tirer la formule vers le bas "New_supplier"
        Range("Test_5").Select
        Selection.AutoFill Destination:=Range("New_supplier"), Type:=xlFillDefault
     
    'Tirer la formule vers le bas "Transfert"
        Range("Test_6").Select
        Selection.AutoFill Destination:=Range("Transfert"), Type:=xlFillDefault
     
     
    'Tirer la formule vers le bas "Mass_production"
        Range("Test_7").Select
        Selection.AutoFill Destination:=Range("Mass_production"), Type:=xlFillDefault
     
     
    'Tirer la formule vers le bas "Closure"
        Range("Test_8").Select
        Selection.AutoFill Destination:=Range("Closure"), Type:=xlFillDefault
     
     
     
    End Sub

    PS : Mon tableau est séparé en différente partie car entre les partie "analysis", "Quotation", "Final Preparation", "Old Supplier", "New Supplier" etc... il y a des formules qui sont différentes

    Merci à vous
    C'est pas facile à décrire mais j'ai espoir pour que vous puissiez m'aider
    Merci d'avance pour votre aide

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par geoffrey.pfirsch Voir le message
    J'aimerai faire en sorte qu'en fonction de la ligne choisie, (pour ajouter une nouvelle ligne) la macro place l'utilisateur sur cette ligne choisie à la fin de la macro
    Le plus simple ne serait-il pas de ne pas du tout déplacer la sélection ?
    En VBA, pour modifier une cellule, il n'est pas obligé de sélectionner cette cellule.
    Pour faire ça, il suffirait de supprimer les Select disgracieux qui jalonnent ton code.

    N'est-ce pas plus simple et clair ainsi ?
    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 Bouton_ajout()
     
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
     
        Range("Test_1").AutoFill Destination:=Range("Analysis"), Type:=xlFillDefault              ' Analysis
        Range("Test_2").AutoFill Destination:=Range("Quotation"), Type:=xlFillDefault             ' Quotation
        Range("Test_3").AutoFill Destination:=Range("Final_Preparation"), Type:=xlFillDefault     ' Final_preparation
        Range("Test_4").AutoFill Destination:=Range("Old_supplier"), Type:=xlFillDefault           ' Old_supplier
        Range("Test_5").AutoFill Destination:=Range("New_supplier"), Type:=xlFillDefault         ' New_supplier
        Range("Test_6").AutoFill Destination:=Range("Transfert"), Type:=xlFillDefault              ' Transfert
        Range("Test_7").AutoFill Destination:=Range("Mass_production"), Type:=xlFillDefault     ' Mass_production
        Range("Test_8").AutoFill Destination:=Range("Closure"), Type:=xlFillDefault               ' Closure
     
    End Sub
    Je pense qu'il est même sans doute possible de faire l'ensemble des AutoFill en une seule ligne de code.

    Au pire, si tes désignations de zone (Analysis, Quotation, etc) avaient une racine commune plus un numéro comme les cellules de référence (Test_1, Test_2, etc.), il serait possible de faire une boucle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Bouton_ajout()
        Dim ZZ As Long
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        For ZZ = 1 To 8
            Range("Test_" & Format(ZZ, "0")).AutoFill Destination:=Range("Zone_" & Format(ZZ, "0")), Type:=xlFillDefault
        Next ZZ    
    End Sub

  3. #3
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour à tous,

    Indépendamment de qu'à écrit Menhir et même si cela n'a plus lieu d'être du fait de son explication précédente, mais pour répondre à la question sur le repositionnement de la ligne sélectionnée initialement, vous pouvez toujours faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Bouton_ajout()
        ligChoisie = ActiveCell.Row
     
        'votre macro
     
        Rows(ligChoisie).Select
    End Sub
    Cdlt

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Plus simple : pointer directement la cellule de départ.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Bouton_ajout()
        Dim Debut As Range
        Set Debut = ActiveCell
     
        'votre macro
     
        Debut.Activate
    End Sub

  5. #5
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2018
    Messages : 6
    Par défaut
    Merci beaucoup pour votre réactivité et vos messages.

    J'ai pris le code d'Arturo83, qui marche très bien.

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

Discussions similaires

  1. Macro copier coller d'une plage sur nouveau fichier excel sous condition
    Par lapagaille dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/02/2014, 14h11
  2. Filtrage sur un tableau EXCEL par macro
    Par cati_78 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/05/2009, 18h25
  3. copie d'un tableau excel sous vb
    Par bouddine dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/02/2008, 15h57
  4. gestion des droits sur un tableau excel 2007
    Par kev0631 dans le forum Excel
    Réponses: 1
    Dernier message: 20/04/2007, 09h54

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