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 :

Création de lien entre les données de deux feuilles [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Points : 0
    Points
    0
    Par défaut Création de lien entre les données de deux feuilles
    Bonjour et bonne année à tous,

    je vais essayer de faire au mieux pour me faire comprendre, et pour ce faire je fais utiliser un fichier exemple..

    J'ai demandé à un professeur de m'aider, et il m'a fourni ce fichier exemple (ci-joint) qui vous permettra de voir ce que je cherche à faire et la macro utilisée (Si on change la semaine ou la couleur d'un article en Feuil1, il doit changer automatiquement en Feuil2).

    Or, en essayant d'adapter sa macro à mon fichier, cela me fait une erreur d'éxecution 1004 : "Erreur définie par l'application ou par l'objet".

    Voici la macro que j'ai modifié pour mon fichier, focalisée sur la ligne ou s'affiche l'erreur :

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Sub Planning()
    
     (...) 
    
    'suppression des données de Plan2
    Sheets("Plan2").Select
    Rows("6:30").Select           'les lignes 6 à 30 sont supprimées (augmenter si nécessaire)
    Selection.Delete Shift:=xlUp
    Cells(6, 1).Select
    
    'sélection de la feuille des données de départ Plan_Proto
    Sheets("Plan_Proto").Select
    
    'sélection de la case de titre d'action
    Cells(4, 7).Select
    
    'Parcourir toute la liste des actions jusqu'à arriver à une case vide (normalement fin de la liste)
    Do Until Selection.Value = ""
    
    'sélection de la case en dessous pour passer à l'action suivante    
    Selection.Offset(1, 0).Select
        
    'récupération des informations de l'action
    Action = Selection.Value                    'Récupération de la valeur de la case action    
    couleur = Selection.Interior.ColorIndex     'Récupération de la couleur de la case action    
    semaine = Selection.Offset(0, 37).Value     'Récupération de la la valeur de la semaine à droite de la case action
    
    'sélection de la feuille du planning (Plan2)
    Sheets("Plan2").Select
    
    'sélection de la première date    
    Cells(5, 1).Select
        
    'recherche de la semaine sur la Feuil7 de la colonne correspondante ou non trouvée
    Do Until Selection.Value = semaine Or Selection.Value = ""
    Selection.Offset(0, 1).Select
    Loop
        
    'Recherche de la première ligne vide    
    Do
    Selection.Offset(1, 0).Select
    Loop Until Selection.Value = ""
        
    'copie de la valeur et de la couleur    
    Selection.Value = Action
    Selection.Interior.ColorIndex = couleur
            
    'sélection de la première date    
    Cells(5, 1).Select
        
    'sélection de la feuille des données de départ (Feuil5) 
    Sheets("Plan_Proto").Select
    Loop
    
    'sélection de la feuille du planning (Feuil7)'pour visualiser le planning
    Sheets("Plan2").Select
    
    'Activer la mise à jour de l'écran
    Application.ScreenUpdating = True
    
    End Sub
    En vous remerciant d'avance pour votre aide,

    Cordialement.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    J'espère que ce n'est pas un professeur d'informatique qui t'a donné ça ! Comme on le dit souvent, l'utilisation des Select dans tous les sens à est proscrire.

    Pour ton problème, je suis très étonné de la ligne sur laquelle est ton erreur. Ou alors "Plan_Proto" est un onglet Graphique et non Feuille ?
    « Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    Merci pour votre réponse.
    C'est un prof polyvalent..

    Pour ton problème, je suis très étonné de la ligne sur laquelle est ton erreur. Ou alors "Plan_Proto" est un onglet Graphique et non Feuille ?
    Eh bien en fait cette ligne s'active, c'est juste après en appuyant sur F8 que l'erreur s'affiche (je ne sais pas si c'est comme ça que vous l'avez compris ou pas). Sinon, Plan_Proto est bien une feuille.

    Comment feriez-vous pour réaliser la même chose que montre le fichier "Exemple Type" sans utiliser Select ? Et comment expliquer que sa macro marche sur cet exemple et pas dans mon fichier ?

    Franchement, je suis paumée, j'ai jamais été douée en code, mais avec mon fichier de plus de 100 lignes à classer, qui sont souvent modifiées, j'avoue que VBA s'impose..

  4. #4
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Voici un code un peu plus propre sur l'exemple de ton prof. Pour ton problème à toi, il faudrait plus de détails sur la façon dont tu l'as adapté pour t'aider.

    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
    52
    53
    54
    55
    56
    57
    Sub Planning()
    '
    'Le raccourci de cette macro est CTRL+MAJ+P
    '
    Dim Produit As Variant      'Permet de stocker la valeur de l'action
    Dim semaine As Integer      'Permet de stocker la date de l'action (si ce n'est pas un entier, il faut changer de type)
    Dim couleur As Variant      'Permet de stocker la couleur de l'action
     
    Dim F1, F2 As Worksheet     'Les feuilles 1 et 2
    Dim iLigne As Integer       'Compteur de ligne
    Dim rgSemaine As Range      'Cellule correspondant à la date
    Dim rgFinColonne As Range   'Nouvelle ligne d'une semaine
     
    Set F1 = Worksheets("Feuil1")
    Set F2 = Worksheets("Feuil2")
     
    'Désactiver la mise à jour de l'écran
    Application.ScreenUpdating = False
     
    'suppression des données de Feuil2
    F2.Rows("2:1000").Delete 'les lignes 2 à 1000 sont supprimées (augmenter si nécessaire)
     
    iLigne = 2
     
    'Parcourir toute la liste des actions jusqu'à arriver à une case vide (normalement fin de la liste)
    Do While F1.Cells(iLigne, 1).Value <> ""
        'récupération des informations de l'action
        Produit = F1.Cells(iLigne, 1).Value                  'Récupération de la valeur de la case action
        couleur = F1.Cells(iLigne, 1).Interior.ColorIndex    'Récupération de la couleur de la case action
        semaine = F1.Cells(iLigne, 1).Offset(0, 1).Value     'Récupération de la la valeur de la semaine à droite de la cas action
     
        'recherche de la colonne correspondant à la date
        Set rgSemaine = F2.Range("1:1").Find(semaine)
     
        If Not rgSemaine Is Nothing Then
            'recherche de la première ligne non vide
            If rgSemaine.Offset(1, 0).Value = "" Then
                Set rgFinColonne = rgSemaine.Offset(1, 0)
            Else
                Set rgFinColonne = rgSemaine.End(xlDown).Offset(1, 0)
            End If
     
            'copie de la valeur et de la couleur
            rgFinColonne.Value = Produit
            rgFinColonne.Interior.ColorIndex = couleur
        End If
     
        iLigne = iLigne + 1
    Loop
     
    'visualisation du planning
    F2.Activate
     
    'Activer la mise à jour de l'écran
    Application.ScreenUpdating = True
     
    End Sub
    « Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    Je vous remercie pour le temps que vous avez passé à essayer de m'aider !

    Je n'arrive pas à comprendre pourquoi je n'arrive pas à adapter votre macro à mon fichier. Même en réduisant mon fichier au même "format" que l'Exemple_Type (en plaçant les données aux mêmes emplacement, c'est à dire la semaine à droite de la cellule Produit en F1, le "calendrier" au départ de la cellule A1 en F2, etc...)

    Je vous joint dans ce message mon fichier (que j'ai du bien évidemment modifier), avec mes données, pour que vous puissiez m'expliquer pourquoi votre macro ne s'adapte pas dessus. (Par ailleurs, quand je copie mes données dans le fichier "Exemple Type", bien évidemment, ça marche !)
    Fichiers attachés Fichiers attachés

  6. #6
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    C'était parce que ton planning n'était pas en dur. Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rgSemaine = F2.Range("1:1").Find(semaine)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rgSemaine = F2.Range("1:1").Find(what:=semaine, LookIn:=xlValues)
    « Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    Je vous remercie, c'est parfait !

    Bonne journée à vous

  8. #8
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    N'oublie pas de mettre le poste en résolu, et éventuellement de voter...
    « Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell

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

Discussions similaires

  1. Lien entre les sources de deux projets
    Par Benoit_T dans le forum Code::Blocks
    Réponses: 0
    Dernier message: 22/03/2012, 17h12
  2. Réponses: 5
    Dernier message: 16/12/2011, 12h22
  3. [XL-2007] comparer les données de deux feuilles
    Par devalender dans le forum Excel
    Réponses: 3
    Dernier message: 07/06/2011, 16h49
  4. [XL-2003] la différence entre les lignes des deux feuilles dans la premiere ligne vide d'une des deux
    Par safouunette dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/11/2010, 10h20

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