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 :

copier une cellule dans plusieurs autres cellules [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Points : 72
    Points
    72
    Par défaut copier une cellule dans plusieurs autres cellules
    Salut à tous,

    J'ai besoin d'aide pour faciliter la saisie dans un fichier.

    Voilà, j'ai un tableau dans lequel je rentre des heures de vacation et il me donne automatiquement les heures de jour, de nuit, de dimanche jour et de dimanche nuit (jusque là, pas de souci).

    Ce qui est ennuyant, c'est que le tableau comporte plusieurs mois et que si les vacations sont identiques chaque jour, je dois me taper 365 copier coller (vous voyez où je veux en venir)

    y'aurait pas un moyen de recopier les valeurs d'une cellule d'un jour dans les cellules des autres mêmes jours.

    merci d'avance pour les aides

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 263
    Points
    34 263
    Par défaut
    salut,

    en copiant 1 fois ton contenu et en selectionnant toutes les cellules dans lesquelles tu veux coller tes informations, tu diminues considerablement le nombre de copier/coller a effectuer
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Points : 72
    Points
    72
    Par défaut
    Merci jpcheck pour ta réponse.

    Cependant, ton idée est utile lorsque les vacations sont identiques pour tous les jours (comme dans mon exemple) : d'ailleurs, c'est ce que je fais.

    Mais ça se complique lorsque les vacations diffèrent entre les jours de semaine et les week-end : je suis obligé de copier/coller les semaines et le problème se pose à la fin de chaque mois lorsqu'une semaine se chevauche sur 2 mois.

    Je souhaiterais pouvoir copier/coller la vacation d'un jour sur les autres mêmes jours (ex : la vacation du lundi serait coller tous les autres lundi)

    Merci

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 263
    Points
    34 263
    Par défaut
    en faisant un filtre sur tes lundi, meme approche

    Rien ne t'empeche ed mettre en place un peu de VBA et de faire un copier/coller par code si ca te fait gagner du temps
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    en faisant un filtre sur tes lundi, meme approche

    Rien ne t'empeche ed mettre en place un peu de VBA et de faire un copier/coller par code si ca te fait gagner du temps
    Je veux bien que tu m'orientes un peu : quelle est la fonction en VBA qui permet de copier une cellule et de la coller avec une condition. Peut-on passer par un bouton pour cela ?

    Dernière question : que veux tu dire par appliquer un filtre sur les lundis

    merci

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 263
    Points
    34 263
    Par défaut
    salut,

    en utilisant une boucle pour appliquer a tous les lundi de ton annee tu auras un code du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For i = 1 to 31 'on se limite a 31 jours dans ton mois, les mois etant mis a cote les uns des autres et pas les uns en dessous des autres
    ' on teste si la date en A & i est un lundi
    If WeekDay(Range("A" & i).Value,vbMonday) = 1 Then
    'on attribue les memes valeurs que celles fixees ailleurs, ici en Z1 par exemple
    Range("B" & i).Value = Range("Z1").Value
    End If
    'on incremente la boucle
    Next i
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Points : 72
    Points
    72
    Par défaut
    OK, je crois que je vois le truc.

    Sauf que je dois l'améliorer un peu.

    Je souhaite faire remplir un tableau avec les jours de semaine et les vacations et qu'ensuite ces valeurs saisies soient recopiées à tous les autres jours de semaine des autres mois.

    Si tu peux m'aider, je cherche le moyen de récupérer les valeurs dans un formulaire. J'avais vu ça une fois sur le forum mais je ne me souviens plus où

    J'ai une idée : passer par une feuille où l'on saisie les vacations pour chaque jour et ensuite, j'utilise ton code pour recopier les valeurs saisies dans les autres mois.

    juste une question STP : est-ce que ce code est valable pour récupérer une valeur dans une autre feuille nommée "data"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("D" & i).Value = Range("data!B3").Value
    Merci encore

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 263
    Points
    34 263
    Par défaut
    Citation Envoyé par Eric26 Voir le message
    Sauf que je dois l'améliorer un peu.
    ma philosophie est de t'apprendre la peche

    un peu de lecture
    http://silkyroad.developpez.com/VBA/UserForm/
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Points : 72
    Points
    72
    Par défaut
    OK, j'y suis presque.

    Par contre, je bloque sur un problème ; si tu pouvais m'aiguiller.

    avec ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If WeekDay(Range("A" & i).Value,vbMonday) = 1 Then
    , lorsque la cellule est vide (c'est à dire un mois qui compte 30 jours et la colonne compte 31 lignes), il m'affiche l'erreur de compilation 13. Alors, j'ai essayé de mettre le code suivant mais ça ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If WeekDay(Range("A" & i).Value,vbMonday) = 1 and WeekDay(Range("A" & i).Value,vbMonday) <> 0 Then
    en fait, je veux le forcer à passer outre les cellules où il n'y a aucun jour de semaine.

    merci d'avance pour ton aide

  10. #10
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 263
    Points
    34 263
    Par défaut
    tu peux faire un test en amont du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("A" & i).Value<>"" Then
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Points : 72
    Points
    72
    Par défaut
    J'ai fais le test mais ça me marque toujours la même erreur d'exécution 13 "incompatibilité de type".

    Dans la cellule Z35 qui pose problème, il y a cette formule :
    =SI(Y35="";"";Z34+1)
    et elle au format personnalisé "jj"

    J'ai mis le code suivant :
    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
    Sub Macro()
     
      For i = 5 To 35
     
      If Range("A" & i).Value <> "" Then
     
            If Weekday(Range("A" & i).Value, vbMonday) = 1 Then
            Range("D" & i).Value = Range("data!B3").Value
            Range("E" & i).Value = Range("data!C3").Value
            Range("F" & i).Value = Range("data!D3").Value
            Range("G" & i).Value = Range("data!E3").Value
            Range("H" & i).Value = Range("data!F3").Value
            Range("I" & i).Value = Range("data!G3").Value
            End If
     
     
            If Weekday(Range("Y" & i).Value, vbMonday) = 1 Then
            Range("AB" & i).Value = Range("data!B3").Value
            Range("AC" & i).Value = Range("data!C3").Value
            Range("AD" & i).Value = Range("data!D3").Value
            Range("AE" & i).Value = Range("data!E3").Value
            Range("AF" & i).Value = Range("data!F3").Value
            Range("AG" & i).Value = Range("data!G3").Value
            End If
     
     
      End If
      Next i
     
    End Sub
    ainsi que le fichier sur lequel je travail.
    Fichiers attachés Fichiers attachés

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 190
    Points : 72
    Points
    72
    Par défaut
    OK, je viens de trouver

    le test en amont prenait en compte une seule colonne alors que le test doit être fait dans toutes les colonnes

    merci encore pour ton aide et ton initiation à la pêche

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

Discussions similaires

  1. Copier coller une cellule dans la même cellule d'un autre classeur
    Par Tho69 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/08/2013, 10h59
  2. Copier des données d'une feuille dans plusieurs autres
    Par Sylcoco dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 03/03/2011, 11h40
  3. Réponses: 0
    Dernier message: 24/02/2011, 17h24
  4. Réponses: 3
    Dernier message: 01/06/2009, 18h21
  5. Réponses: 9
    Dernier message: 09/03/2007, 15h01

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