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 de données en fonction d'autres données


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Copie de données en fonction d'autres données
    Bonjour,
    j'aurais besoin d'aide sur Excel!!!

    Je m'embrouille et pour ce que je veux faire je pense qu'il faut que je passe par vba mais je bloque!!

    Voilà mon probleme:
    Sur une feuille de calcul que l'on appelleras Feuille1, j'ai une série de textes dans les cellules B2 à B9!!
    Sur une autre feuille de calcul que l'on appelleras Feuille2 j'ai mes textes qui sont recopiés automatiquement dans les cellules B2 à B9 aussi (ca je sais le faire)

    Dans la Feuille2 en cellules C2 à C9 j'écrit soit OUI , NON ou PEUT ETRE en rapport avec les textes en B2 à B9.
    Les textes en Feuille1 ne seront pas éffacés et resteront exactement à leur place, par contre chaque semaine, les textes en Feuille2 seront éffacés et seront remplacés par des textes qui seront ajoutés en Feuille1 à la suite de la cellule B9 (B10 à...)
    Sur la Feuille2 il n'y aura pas d'autres cellules que B2 à B9.

    Mon problème est que je voudrais que la valeur (oui, non ou peut etre) que j'ai assigné a un texte en Feuille2 soit recopié en Feuille1 en cellule C a coté du texte dont il est attaché en Feuille2. Ce n'est pas facile car je le rappelle, chaque semaine les textes en Feuille2 changeront et il faudra que la recopie continue a la suite des cellules B9, B10... en feuille1.
    Voilà, je sais que ca peut paraitre tordu, désolé par avance!!! J'éspère que vous aurez compris sans mal ce que j'ai voulu expliquer. Sinon je préciserait!!!
    Cordialement, TEMARA79

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 467
    Points : 493
    Points
    493
    Par défaut
    Bonjour
    voici un code qui te conviens à inserer dans un module standart.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
    Dim temp As Variant
    With Feuil2
         derli = .Cells(Rows.Count, 2).End(xlUp).Row
         temp = .Range("B2:C" & derli).Value
        End With
    Feuil1.Range("B65536").End(xlUp).Resize(derli - 1, 2) = temp
    End Sub
    Bonne chance

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Merci de la rapidité de ta réponse Abed_H!!!
    J'essaie ça et je te tiens au courant!!!

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Je n'arrive pas à utiliser ce module!! Je l'ai joint à un bouton pour que ce module se déclenche lors du click mais il me met: erreur d'éxecution 424 Objet requis et me surligne dans le debogage la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    derli = .Cells(Rows.Count, 2).End(xlUp).Row
    Je ne sais vraiment pas quoi faire!!!

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Je viens de remarquer que si j'enleve le point devant cells ainsi que sur la ligne du dessous, je n'ai plus l'erreur mais elle réapparait sur la ligne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuille1.Range("B65536").End(xlUp).Resize(derli - 1, 2) = temp

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 467
    Points : 493
    Points
    493
    Par défaut
    Citation Envoyé par TEMARA79 Voir le message
    Je n'arrive pas à utiliser ce module!! Je l'ai joint à un bouton pour que ce module se déclenche lors du click mais il me met: erreur d'éxecution 424 Objet requis et me surligne dans le debogage la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    derli = .Cells(Rows.Count, 2).End(xlUp).Row
    Je ne sais vraiment pas quoi faire!!!
    Rassure toi bien que tes 2 feuilles sont nommée Feuil1 et Feuil2
    (code module) apart ça le module fonctionne sans problème.
    Bonne soirée.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par TEMARA79 Voir le message
    Je viens de remarquer que si j'enleve le point devant cells ainsi que sur la ligne du dessous, je n'ai plus l'erreur mais elle réapparait sur la ligne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuille1.Range("B65536").End(xlUp).Resize(derli - 1, 2) = temp
    bonjour

    tu as écris Feuille1 ce ne serait pas plutôt Feuil1

    a+
    Cordialement.

    N'oubliez pas de cliquer sur Résolu quand vous avez obtenu la réponse à votre question.
    Citation
    Il y a 10 sortes de gens au monde : ceux qui connaissent le binaire et les autres » - Anonyme
    Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Bonjour et merci pour vos réponses à tous les deux!!! J'ai réussi à faire marcher le module, en effet j'avais des problemes de nom de feuille!! Par contre, je suis chiant je sais, mais ça ne solutionne pas mon problème!!!

    Je m'explique:
    Adeb_H, ton module copie instantanément les données de la feuille 2 sur la feuille 1, solution que j'ai moi meme utilisé (sous une autre forme) pour copier mes données en colonne B2 à B... de ma feuil1 pour aller sur la colonne B2 à B9 en Feuil2 (en fait je fais ouvrir un formulaire à l'utilisateur pour saisir des données qui sont copiées instantanément en colonne B2 à B... sur la feuil1 et en meme temps en colonneB2 à B9 sur la feuil2. je ne fais que 9 texte à la fois par mois).

    En fait je ne veux pas recopier les donnée en colone B2 à B9 de la Feuil2 sur la colonne B2 à B... de la Feuil1 puisque mes données y sont déjà!! Je veux juste copier les données de la colonne C2 à C9 de la Feuil2 sur la la colonne C2 à C... de la Feuil 1 juste à coté du texte en colonne B.. qui lui es associé en Feuil2.

    Par exemple en feuil1 j'ai en B2 le texte "bonjour" et (grace a ma recopie auto) j'ai le meme texte "bonjour" en B2 de la Feuil2. Maintenant j'écris le texte "OUI" en C2 sur la Feuil2 juste à coté de mon texte auquel il correspond. Ce que je voudrais c'est recopier ce texte "OUI" en Feuil1 à coté du texte auquel il s'attache c'est à dire aussi en C2. Tout celà serait facile si, comme annoncé dans mon probleme, il n'y avait pas ce detail:

    Toutes les données de la Feuil1 resterons à leur place et ne bougerons pas et ne seront pas éffacées. Par contre, les données de la Feuil2 seront éffacées chaque mois et grace à mon formulaire dont je parlais au début, je rajouterais des données qui seront copiées en Feuil1 (à la suite de mes autres données en B... et en Feuil2 en remplacement des autres données en B2 à B9)!! C'est tout la mon probleme, car il faut que la macro ou prog vba trouve le text correspondant dans ma feuil1 a celui de ma Feuil2 et y copier ma donnée en C.

    Par contre, honte sur moi, j'ai oublié de préciser que mes données en C de la Feuil2 auront un arrière plan de couleur (vert pour OUI, rouge pour NON) et devront etre répercutées en Feuil1 avec la recopie.

    Voilà!!! je sais je suis chiant et ca me gêne de vous embeter avec tout ca mais je galère tellement!!! Je ne suis pas un expert, je connais juste 2 ou 3 trucs mais là c'est la panique complète!!

    Voilà, encore une fois j'éspère que vous avec compris ce que j'ai voulu expliquer et que je ne vous ai pas embrouillés.

    Cordialement, TEMARA79.

  9. #9
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 467
    Points : 493
    Points
    493
    Par défaut
    Bonsoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub CopieDonnées()
    Dim rngA As Range, cell As Range
    Dim rngB As Range, c As Range
      Set rngA = Feuil1.Range("B2:" & Feuil1.Cells(Rows.Count, "B").End(xlUp).Address)
      Set rngB = Feuil2.Range("B2:" & Feuil2.Cells(Rows.Count, "B").End(xlUp).Value)
          For Each cell In rngA
            Set c = rngB.Find(cell)
            Feuil1.Cells(cell.Row, "C").Value = c.Offset(, 1)
        Next
    End Sub

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    ReBonjour!!!
    Abed_H j'ai un petit soucis avec ton code!!!
    Dès que je l'execute il me marque une erreur d'éxecution 1004 "la methode 'range' de l'objet '_worksheet' a échoué et il me surligne la ligne de code suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rngB = Feuil2.Range("B2:" & Feuil2.Cells(Rows.Count, "B").End(xlUp).Value)
    J'ai fait un copié collé de ton code donc ca devrait marcher, je ne voit pas d'ou vient le probleme!!!

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

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonsoir,

    Apparement Abed n'est pas dans les parages, je vais donc me permettre de répondre pour lui.
    Remplace .Value par .Address
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rngB = Feuil2.Range("B2:" & Feuil2.Cells(Rows.Count, "B").End(xlUp).Address)
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Bonsoir Fring et merci de ta réponse!!
    Effectivement, en remplacant value par adress ca marche!!

    Par contre nouveau soucis, le code fonctionne et copie bien mes données de cellules C de Feuil2 en cellule C de Feuil1 si le texte correspondant en cellule B est identique sur les deux feuilles et à la meme ligne, mais si j'efface les textes en cellule C de la Feuil2 pour les remplacer par de nouveaux textes (copiés aussi en Feuil1 mais a la suite des autres textes), le code s'arrete et me met une erreur 91 "variable objet ou bloc with non défini" ensuite quand j'arrete le debogage une msbox me marque "microsoft excel ne trouve pas les données..."

    J'ai aussi ce probleme de couleur d'arriere plan!! Comment, en meme temps que je copie les donnée des cellules C je peux copier les couleurs d'arriere plan que je leur ai assignées?

    Je touche au but, grâce à vous!!!
    Cordialement et en vous remerciant d'avance!!!

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

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Pour l'erreur, je ne vois pas directement comme ça le pourquoi du comment, j'ai un peu du mal à suivre le fil de la discution.
    J'ai modifié le code pour que la mise en forme de la cellule soit copiée également et pour qu'il passe à la ligne suivante si il ne trouve pas de correspondance entre les deux feuilles.

    Tu peux tester stp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub CopieDonnées()
    Dim rngA As Range, cell As Range
    Dim rngB As Range, c As Range
     
      Set rngA = Feuil1.Range("B2:" & Feuil1.Cells(Rows.Count, "B").End(xlUp).Address)
      Set rngB = Feuil2.Range("B2:" & Feuil2.Cells(Rows.Count, "B").End(xlUp).Address)
        For Each cell In rngA
            Set c = rngB.Find(cell)
            If Not c Is Nothing Then
                c.Offset(0, 1).Copy Feuil1.Cells(cell.Row, "C")
            End If
        Next
    End Sub
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Grand merci à toi Fring!!!

    Ca marche enfin et la mise en forme se copie également!!! Mon problème est enfin résolu!!!!

    Je valide et j'en profite également pour dire aussi un grand merci à Abed_H pour ses precieux conseils également!!!

    TEMARA79

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/05/2013, 09h38
  2. Réponses: 6
    Dernier message: 07/02/2013, 15h50
  3. Réponses: 4
    Dernier message: 04/05/2011, 14h11
  4. exporter des données d'une base de donnée accsess to une autre
    Par Msysteme dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 21/11/2008, 07h31
  5. Réponses: 11
    Dernier message: 13/07/2006, 16h15

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