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 d'un tableau d'une feuille à une autre : une cellule ne se recopie pas


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Copie d'un tableau d'une feuille à une autre : une cellule ne se recopie pas
    Bonjour à tous,

    J'écris un code qui doit copier un tableau de valeur d'une feuille à une autre, tout en créant un lien entre les deux (si il y a modification sur la deuxième feuille, cela doit impacter la première). Le problème est qu'il y a une (et une seule) cellule qui ne se recopie pas, ce qui entraine des erreurs dans les calculs des lignes suivantes.

    Voici la partie du code qui recopie les deux tableaux :

    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
    For K = Etage(I) To Etage(I + 1) - 1 Step 1
                        'On recopie tout le texte du tableau (unité, noms, Opt)
                        Range("Optimisation!V4").Offset(K + C, 0).Value = "TrainEpi" & " " & Range("U8").Offset(K, 0).Value
                        Range("Optimisation!W4").Offset(K + C, 0).Value = "TrainEpi" & "_" & Range("V8").Offset(K, 0).Value
                        Range("Optimisation!Y4").Offset(K + C, 0).Value = Range("X8").Offset(K, 0).Value
                        Range("Optimisation!AB4").Offset(K + C, 0).Value = Range("AA8").Offset(K, 0).Value
                        Range("Optimisation!Z4").Offset(K + C, 0).Value = "=" & "TrainEpi" & "!Y" & 8 + K
                        Range("Optimisation!AA4").Offset(K + C, 0).Value = "=" & "TrainEpi" & "!Z" & 8 + K
     
                            If Range("AA8").Offset(K + C, 0).Value <> 2 Then
                                Dim Sauvegarde 'Permet de garder la valeur de la variable précédente pour ne pas repartir à zéro à chaque fois
                                Sauvergarde = Range("W8").Offset(K, 0).Value
                                Range("W8").Offset(K, 0).Value = "=Optimisation!X" & 4 + K + C
                                Range("Optimisation!X4").Offset(K + C, 0).Value = Sauvegarde
                            Else
                                Range("Optimisation!X4").Offset(K + C, 0).Value = "=" & "TrainEpi" & "!W" & 8 + K
                            End If
    C ici vaut 0 et K va de 20 à 37.

    Pour K =20 et 21 ça fonctionne mais à la ligne suivante, la cellule qui se trouve dans la colonne W de la feuille TrainEpi ne se recopie pas vers la cellule de la colonne X dans le feuille Optimisation.

    Ah et je précise que j'ai vérifié les formats de cellules, celui de la cellule qui pose pb est le même que pour les autres.

    J'espère que je suis compréhensible,

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Ca peut venir de tes données. Quelle est la valeur de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("AA8").Offset(22).Value
    Poste un classeur exemple.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Je ne peux pas fournir le classeur, il y a des feuilles confidentielles dessus.

    En fait le programme que je fais dois ensuite optimiser les variables que j'ai recopié sur la deuxième feuille. Dans la colonne AA8 il y a des indices entrés manuellement au préalable : si l'indice est 2, le programme doit juste recopier la formule mais l'optimisation ne touchera pas ensuite la valeur associée. Si l'indice est 1, on va optimiser dessus.

    La cellule qui ne se recopie pas a pour indice 2. En gros le nom de la variable, l'unité et les bornes se recopient mais pas la valeur elle même (colonne W de la feuille TrainEpi, vers colonne X de la feuille optimisation).

    Est-ce que c'est clair ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Qu'est-ce que tu veux qu'on te dise ? C'est quoi "Sauvegarde" et quelle est sa valeur quand la copie ne se fait pas ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  5. #5
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mai 2014
    Messages : 35
    Points : 51
    Points
    51
    Par défaut
    Bonjours,

    Non ce n'est pas très clairs.. Avec si peu d'information c'est assez compliqué de t'aider

  6. #6
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Encore une fois je ne peux pas vous envoyer le classeur sur lequel je travaille. En PJ les entêtes des tableaux avec les cellules sur lesquelles ils sont placés dans chaque feuille, peut être que ce sera plus visuel.

    Justement la sauvegarde ne paraît pas fonctionner pour cette cellule en particulier, sa valeur est nulle. C'est pour cela que je pensais au format de cellules mais je ne trouve pas de différence avec celles qui se sont recopié correctement.

    Cordialement,
    Fichiers attachés Fichiers attachés

  7. #7
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Il y a plusieurs choses de surprenantes dans ton code.

    A plusieurs reprises, tu utilises "Value" pour placer dans la cellule quelque chose qui ressemble fortement à une formule (les deux lignes avant le IF).
    Normalement, pour introduire une formule dans une cellule, on utilise plutôt la propriété Formula (ou FormulaLocal)

    Ensuite, dans les premier Range, tu sembles introduire le nom de feuille dans la référence de Range. Je n'ai jamais utilisé ce type de syntaxe, je ne peux donc pas dire que ça ne marche pas, mais, habituellement, la feuille de calcul est plutôt déclarée avec l'objet Worksheet.
    Par exemple, la première ligne après le For, perso, je l'écrirai plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheet("Optimisation").Cells(4 + K + C,"V").Value = "TrainEpi " & Cells(8 + K,"U")
    Je ne comprends pas l'intérêt de ta variable Sauvegarde vu que :
    > Si le If est Vrai, elle est réinitialisée (on utilise pas sa valeur précédente)
    > Si le If est faux, elle n'est pas utilisée.
    Il suffirait d'inverser les deux lignes qui suivent le "Sauvegarde =" pour pouvoir supprimer cette ligne.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bon, écoute; je ne suis pas devin. Le nom des feuilles ne correspond pas à la macro. Moi, je laisse tomber.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je n'ai pas examiné ton code dans son ensemble, toutefois il me semble qu'il y a une erreur de syntaxe dans la référence aux cellules dans certaines lignes.
    Lorsque dans une cellule on fait référence à une feuille et à une cellule, la syntaxe est NomDeLaFeuille!RefCellule (Le point d'exclamation vient après le nom de la feuille.
    Or dans cette ligne, tu l'appliques
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("Optimisation!Z4").Offset(K + C, 0).Value = "=" & "TrainEpi" & "!Y" & 8 + K
    et ici non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("Optimisation!V4").Offset(K + C, 0).Value = "TrainEpi" & " " & Range("U8").Offset(K, 0).Value
    Encore une fois, je n'ai pas examiné l'ensemble de tes lignes de ta procédure et n'ai fait aucun test.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  10. #10
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    salut,
    je relève à la première du code posté une instruction sans effet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For K = Etage(I) To Etage(I + 1) - 1 Step 1
    Je n'irais pas plus loin.
    Qu'est ce que tu veux faire ?
    Peux tu donner une explication détaillée que quelqu'un pourrait comprendre ici ?
    Ousmane


    Quand on tombe dans l'eau, la pluie ne fait plus peur.

Discussions similaires

  1. Réponses: 7
    Dernier message: 11/07/2017, 16h31
  2. Réponses: 6
    Dernier message: 26/05/2014, 09h58
  3. Réponses: 3
    Dernier message: 18/04/2012, 12h05
  4. [XL-2003] Extraction d'une zone ovale d'une photo insérée dans une feuille
    Par bolide7 dans le forum Excel
    Réponses: 4
    Dernier message: 21/04/2011, 18h45
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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