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 :

Copie des données d'une feuille 1 à une feuille 2


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Copie des données d'une feuille 1 à une feuille 2
    Bonjour,

    Dans le fichier EXCEL en pièce jointe, j'ai deux feuilles dont une principale avec les données personnelles d'un client.
    Ce client peut habiter dans plusieurs villes différentes. Ces villes sont séparées par des ";".
    J'aimerais que les informations de cette feuille, lors de la saisie par le client se retrouve automatiquement dans la feuille "recapitulatif" disposé tel que dans le fichier joint si le client est dans plusieurs villes différentes.

    Comment est ce possible avec des macros en VBA?

    Merci d'avance pour votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour Magnian, bonjour le forum,

    Em pièce jointe ton fichier modifié avec le code ci-dessous appliqué au bouton Recap. Attention, ça ne fonctionne que si les villes sont séparées par un point-virgule (;) !
    Le code :

    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
    Private Sub CommandButton1_Click()
    Dim I As Object 'déclare la variable I (onglet Information principale)
    Dim R As Object 'déclare la variable R (onglet Recapitulatif)
    Dim V() As String 'déclare le tableau de variables indexées V (Villes)
    Dim NBV As Integer 'déclare la variable NBV (NomBre de Villes)
    Dim J As Integer 'déclare la variable J (incrément)
    Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
     
    ActiveCell.Select 'enlève le focus au bouton
    Set I = Sheets("Information principale") 'définit l'onglet I
    Set R = Sheets("Recapitulatif") 'définit l'onglet R
    NBV = UBound(Split(I.Range("B5").Value, ";")) 'définit le nombre d'éléments séparés par un point-virgule (;)
    ReDim V(0 To NBV) 'redimensionne le tableau de variables indexées V
    For J = 0 To NBV 'boucle de 0 à NBV
        Set DEST = R.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
        DEST.Value = I.Range("B2") 'renvoie l'ID
        DEST.Offset(0, 1).Value = I.Range("B3") 'renvoie le Nom
        DEST.Offset(0, 2).Value = I.Range("B4") 'renvoie le Prénom
        V(J) = Split(I.Range("B5"), ";")(J) 'ajoute la Jième ville comme variable indéxée V(J) au tableau V
        DEST.Offset(0, 3).Value = V(J) 'renvoie la Jième ville
    Next J 'prochaine ville de la boucle
    End Sub
    Le fichier :

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour Thautheme,

    Merci pour ta réponse. Mais peut-on le faire sans le bouton "Recap" via une formule dans le code?

    Merci d'avance pour ta réponse.

  4. #4
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonsoir Magnian, bonsoir le forum,

    On pourrait le faire automatiquement après la saisie de la cellule B5 mais si il faudrait contrôler que toutes les données ont bien été éditées. Ou alors au double-clic dans une cellule/plage ou encore au clic du bouton droit dans une cellule/plage... Qu'est-ce qui te conviendrait le mieux ? Dans quelle cellule/plage ?

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour Thautheme,

    On pourrait le faire après la saisie de la cellule B5, ça me convient mieux. Est-on obligé de vérifier que les données soient bien éditées?

    Cordialement,

  6. #6
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour Magnian, bonjour le forum,

    Citation Envoyé par magnian Voir le message
    Est t'on obligé de vérifier que les données soient bien éditées?
    Non, mais tu risques d'avoir des données manquantes... Je te modifie le code dès que j'ai un moment...

  7. #7
    Nouveau Candidat au Club
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour Thautheme,

    Au lieu de compter le nombre de ville avec la variable NBV, peut-on juste compter le nombre de ";" qui correspondra ainsi au nombre de ville?

    c'est à dire pour 2 villes par exemple: ville1;ville2;
    Le nombre de ";" correspondant ainsi au nombre de ville...

  8. #8
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour Magnian, bonjour le forum,

    Oui c'est une autre manière de faire. Mais c'est en gros ce que fait la fonction Split. On pourrait coder comme ça en bouclant sur tous les caractères de la cellule B5

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim NBPV as Integer (NomBre des Points-Virgules)
    Dim I as String
    For I=1 to Len(Range("B5").Value)
         If Mid(Range("B5").Value,I,1) = ";" then NBPV = NBPV + 1
    Next I
    Mais je préfère la fonction Split. Les coups et les douleurs hein !...
    Ton fichier modifié :
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Charger une JComboBox ou une JList des données d'un champ d'une table dans une BDD.
    Par MasterMbg dans le forum Codes sources à télécharger
    Réponses: 2
    Dernier message: 27/09/2013, 12h16
  2. Réponses: 6
    Dernier message: 22/07/2013, 16h24
  3. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  4. Réponses: 1
    Dernier message: 13/12/2010, 14h31
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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