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 :

VBA - Macro qui copie des données d'une case dans une autre [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Agent de Maitrise
    Inscrit en
    Juin 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent de Maitrise

    Informations forums :
    Inscription : Juin 2019
    Messages : 3
    Par défaut VBA - Macro qui copie des données d'une case dans une autre
    Bonjour,

    Ma version d'excel c'est :Excel 2010

    Quand j'ai un soucis, je trouve d'habitude la solution à mon problème parmi les discussions déjà ouvertes, mais là je suis coincé.
    Je pense que je n'arrive pas à formuler mon problème clairement, c'est pour ça que j'ouvre une discussion, pour pouvoir l'expliquer plus en détail.

    Je souhaite copier les données d'une case dans une autre .... je m'explique

    J'ai un fichier client avec une colonne pour le n° du devis, une pour le nom du contact, une pour l'adresse de facturation, une pour l'adresse du chantier .... et je voudrais que lorsque l'on remplisse la cellule de l'adresse de facturation, la cellule de l'adresse du chantier se remplisse automatiquement en reprenant ce que nous avons noté dans l'adresse de facturation (je voudrais que ça reprenne le texte et non pas avoir une formule qui copie l'information.
    Ainsi, quand on rempli les données, si les deux adresses sont identique, quand on rempli l'adresse de facturation, ça rempli l'adresse du chantier, et si les adresses sont différentes, on saisi l'adresse de facturation et on modifie les info dans la cellule de l'adresse de chantier ....

    Je sais pas si j'ai été clair ...

    Je vous remercie d'avance si vous pouvez m'aider.

  2. #2
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonjour, j'ai résolu ce problème avec des OnKeys, lorsque j'arrive sur la cellule concernant l'adresse du chantier, si c'est la même, je la valide vide et une macro la remplit automatiquement avec l'adresse du client et passe à la cellule suivante sinon, je remplis l'adresse du chantier et la macro me passe à la cellule d'après en laissant le texte saisie manuellement. Je ne sais si j'ai été très clair?
    ci dessous exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
    If ActiveCell.Value = "" Then
        ActiveCell.Value = ActiveCell.Offset(0, -5).Value ' (0, -5) est donné pour exemple et dépend du nombre de cellule séparant les données recherchées.
        ActiveCell.Offset(0, 1).Select
    Else
        ActiveCell.Offset(0, 1).Select
    End If
    End Sub
    Cordialement

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Agent de Maitrise
    Inscrit en
    Juin 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent de Maitrise

    Informations forums :
    Inscription : Juin 2019
    Messages : 3
    Par défaut
    Bonjour,

    Je te remercie pour ta réponse, mais je n'arrive pas à faire fonctionner ta macro.
    Si j'ai tout bien compris: je note une info en A1, quand je valide F1 sans rien y noter, la macro devrait noter les infos de A1 dans F1.

    Mais rien ne se passe ....

    j'ai trouvé ce code sur le forum qui Affiche la date en colonne 3 lorsque la colonne 2 est modifiée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    If Target.Column = 2 Then
        Cells(Target.Row, 3).Value = Now
    End If
     
    End Sub
    mais j'arrive pas à le modifier pour qu'au lieu de noter la date, il note les infos d'une autre colonne

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Transitoire,
    Evite les Select et autres ActiveCell

    maxitaz,
    Borne tout code reporté par les balises #.
    Il n'en sera que plus lisible

    Personnellement, pour une meilleure lecture du code, je teste une condition contraire pour sortir de suite de la procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Column <> 2 Then Exit Sub
    Pour répondre à ta question.
    Procède d'abord à une formulation sur le tableur.
    Essaie ensuite de l'adapter dans la procédure VBA
    - soit en utilisant les fonctions natives d'Excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.WorksheetFunction.VLookup
    - soit en effectuant la formulation, elle-même suivie d'un collage de valeurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Worksheets("larange")
    .Formula = "...."
    .Value = .Value
    End With
    Je me répète. C'est d'abord le tableur qui doit retourner le résultat. VBA interviendra en aval.

  5. #5
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonjour
    @Maxitaz, ma macro ne comprend pas l'automatisme, c'était juste pour faire comprendre le principe. il faudra faire ensuite l'automatisme soit par on keys soit par modification de la feuille, qui appellera la macro. Donc pour essayer, vous sélectionnez F1 et éxécutez la macro Test et vous comprendrez.
    @MarcelG. Compte tenu du peu d'indications de l'arrivée des entrées de données etc etc, j'ai utilisé un morceau d'un vieux programme existant qui ma rendu de fier service durant une dizaine d'années, afin de faire comprendre le principe de ce que je tentais d'expliquer.

    Cordialement

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Agent de Maitrise
    Inscrit en
    Juin 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent de Maitrise

    Informations forums :
    Inscription : Juin 2019
    Messages : 3
    Par défaut
    Je vous remercie pour l'aide apportée

    j'ai repris le code et je l'ai modifié

    voilà ce que ça donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    If Target.Column = 6 Then
    Cells(Target.Row, 8).Value = Cells(Target.Row, 6).Value
    End If
     
    End Sub
    Donc maintenant, quand je tape une valeur dans la colonne 6, ça reporte cette valeur dans la colonne 8

    Merci,

  7. #7
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,

    Un petite remarque :
    Target est la plage de cellules modifiées, donc pas toujours une cellule unique.
    Par exemple dans le cas d'un copier/coller de C2:F6 vers C7, il y a 5 valeurs à mettre à jour et Target.column n'est pas égal à 6
    J'aurais écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range
    Dim r As Range
      Set r = Intersect(Target, Me.Columns("F"))
      If r Is Nothing Then Exit Sub
      Application.EnableEvents = False
      For Each c In r.Cells
        c.Offset(0, 2).Value = c.Value
      Next c
      Application.EnableEvents = True
    End Sub

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

Discussions similaires

  1. [XL-2013] [VBA] Macro qui recopie des données en fonction d'un code référence
    Par TurtleSpeed dans le forum Excel
    Réponses: 6
    Dernier message: 19/12/2017, 14h00
  2. Réponses: 1
    Dernier message: 17/02/2015, 13h34
  3. Macro qui copie des données d'un affichage particulier d'un MSP.
    Par grenoult dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/05/2011, 14h50
  4. Réponses: 3
    Dernier message: 09/12/2007, 18h07
  5. Copie des données d'une table d'une base Interbase 6
    Par Djedjeridoo dans le forum InterBase
    Réponses: 6
    Dernier message: 02/02/2004, 09h39

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