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 :

Ecrire dans deux cellules sur des feuilles différentes en même temps. [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Dav1961
    Homme Profil pro
    Futur retraité
    Inscrit en
    Septembre 2022
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Futur retraité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 132
    Par défaut Ecrire dans deux cellules sur des feuilles différentes en même temps.
    Bonjour à tous,

    J'ai bien avancé dans mon projet, cependant je suis freiné par 3 petits soucis que je n'arrive pas à résoudre et qui me bloquent.

    1 - Lorsque je clique sur une date qui va ouvrir la feuille correspondant à la semaine, j'aimerai que l'on soit positionné directement sur la même date de la feuille (par ex : je clique sur le 18/01 semaine 3 alors dans la feuille 3 la cellule correspondant au 18/1 est sélectionnée.)

    2 - Si j'écris en AK27 de la feuille "Calendrier" alors le texte est copié dans la cellule du 9 janvier de la semaine correspondant (feuille "3" - cellule AP2). Principe valable pour toutes les dates du calendrier

    Il n'y a pas de mot de passe dans le verrouillage des feuilles (pour l'instant)

    Merci par avance pour vos suggestions ou solutions

    Agenda_Heb.xlsm

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Par défaut
    Salut,

    Il suffit de chercher dans la 2e ligne, quelle cellule a la même valeur que Target.
    Quelque chose dans ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        Dim Ws As Excel.Worksheet
        Set Ws = ThisWorkbook.Worksheets(N_SEM)
        Ws.Visible = True
        Ws.Activate
     
        Dim rng As Excel.Range
        For Each rng In Ws.Range("B2:AX2")
            If (rng.Value = Target.Value) Then
                rng.Select
            End If
        Next
    Notes:
    - Ajoute Option Explicit en tête de chaque modules.
    - On Error Resume Next: A moins que tu aies une raison valable d'employer cette instruction, fait moi le plaisir de la virer. Ca masque les erreurs potentielles, et c'est source de bugs particulièrement difficile à débusquer.
    - Application.ScreenUpdating = False: Commence par ecrire quelque chose qui produit le résultat / comportement attendu avant d'optimiser.
    "Premature optimisation is the root of all evils in software development" (Donald Knuth).

  3. #3
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour Dav1961

    J'ai bien avancé dans mon projet
    Effectivement c'est une vraie usine.

    1 - Lorsque je clique sur une date qui va ouvrir la feuille correspondant à la semaine, j'aimerai que l'on soit positionné directement sur la même date de la feuille
    Je t'ai modifié la macro ainsi que ton calendrier mensuel pour qu'il respecte le choix de date.
    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
    Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim ddm As Date
    Dim pos As Integer
    Dim sem As String
        Application.ScreenUpdating = False
        If Target.Count > 1 Then Exit Sub
        If Target.Value = "" Then Exit Sub
        If Target.Row >= 7 And Target.Row <= 21 Then
            Range("B24") = Target.Value                                  ' maj mois
            sem = CStr(Application.IsoWeekNum(Target.Value))             ' semaine
            ddm = DateSerial(Year(Target.Value), Month(Target.Value), 1) ' date choisie
            Range("B26").Value = ddm - Application.Weekday(ddm, 2) + 1   ' lundi début mois choisi
            With Worksheets(sem)                                         ' sélection feuille
                .Visible = True
                .Activate
                pos = 1                                                  ' sélection date
                While .Range("A2").Offset(0, pos).Value <> Target.Value
                    pos = pos + 1
                Wend
                .Range("A2").Offset(0, pos).Activate                     ' position colonne
            End With
        End If
        Application.ScreenUpdating = True
    End Sub
    2 - Si j'écris en AK27 de la feuille "Calendrier" alors le texte est copié dans la cellule du 9 janvier de la semaine correspondant (feuille "3" - cellule AP2)
    Il me semble que ton exemple est incorrect mais j'ai compris le principe.
    Par contre il ne faut pas écrire sur la ligne 2 car sinon tu écrases ton tableau aussi le vais à la première ligne vide.
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim pos As Integer
    Dim lbr As Integer
    Dim sem As String
        If Target.Count > 1 Then Exit Sub
        If Not Intersect(Target, Range("B27:AR37")) Is Nothing Then
            sem = CStr(Application.IsoWeekNum(Target.Offset(-1, 0).Value))
            With Worksheets(sem)
                pos = 1: lbr = 1    ' sélection date
                While .Range("A2").Offset(0, pos).Value <> Target.Offset(-1, 0).Value
                    pos = pos + 1
                Wend                ' sélection ligne vide
                While .Range("A2").Offset(lbr, pos).Value <> ""
                    lbr = lbr + 1
                Wend                ' copie de la saisie
                .Range("A2").Offset(lbr, pos).Value = Target.Value
            End With
        End If
    End Sub
    Il n'y a pas de mot de passe dans le verrouillage des feuilles (pour l'instant)
    Comme le mot de passe ne peut que tout compliquer, tu peux t'en passer sans regret.

    Voici ton classeur modifié à tester : bonne soirée.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre confirmé Avatar de Dav1961
    Homme Profil pro
    Futur retraité
    Inscrit en
    Septembre 2022
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Futur retraité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 132
    Par défaut
    Bonjour à tous,

    Merci deeddolith et anasecu pour vos réponses.

    anasecu, j'ai testé ton fichier mais je rencontre un soucis. Normalement lorsque je clique sur un des mois du calendrier, celui de l'agenda (feuille "Calendrier") se modifie en même temps, hors là ce n'est plus le cas.
    Sinon, merci beaucoup pour les codes.
    J'ai conscience que c'est une usine à gaz, mais je n'ai pas eu le choix en limitant le Vba, car je serai bientôt en retraite et mon remplaçant ou remplaçante ne saura pas forcément gérer les problèmes.
    Je vais laisser un mode d'emploi mais la demande venant de ma hiérarchie je n'avais pas trop le choix et le travail est conforme à leurs attentes.
    Encore merci pour votre aide

  5. #5
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour Dav1961,

    Normalement lorsque je clique sur un des mois du calendrier, celui de l'agenda (feuille "Calendrier") se modifie en même temps, hors là ce n'est plus le cas.
    Voilà, c'est rectifié

    la demande venant de ma hiérarchie je n'avais pas trop le choix et le travail est conforme à leurs attentes.
    C'est le principal mais cela ne garanti pas leur compétence pour développer.

    Bonne continuation
    Fichiers attachés Fichiers attachés

  6. #6
    Membre confirmé Avatar de Dav1961
    Homme Profil pro
    Futur retraité
    Inscrit en
    Septembre 2022
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Futur retraité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 132
    Par défaut
    Citation Envoyé par anasecu Voir le message
    Bonjour Dav1961,
    C'est le principal mais cela ne garanti pas leur compétence pour développer.
    ça c'est certain. Beaucoup de demande, mais peu de compétence.
    Comme ils savent que je vais partir, alors on charge la mule (ou le mulet).
    Je regarde le fichier, mais il y a une demande supplémentaire et je vais voir comment gérer ça, sinon je reviendrai vous voir.
    Merci encore pour ton aide

  7. #7
    Membre confirmé Avatar de Dav1961
    Homme Profil pro
    Futur retraité
    Inscrit en
    Septembre 2022
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Futur retraité

    Informations forums :
    Inscription : Septembre 2022
    Messages : 132
    Par défaut
    Merci anasecu ça fonctionne bien.

    Alors voici la demande (peut-être pas réalisable).

    La cellule B26 doit obligatoirement commencer par le 1er de chaque mois, et là je ne sais pas comment je vais faire.
    Il va falloir faire des calculs savants
    Si tu as une idée pour me mettre sur la piste, je suis preneur.
    Merci par avance

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/03/2021, 16h00
  2. [XL-2003] Double clic dans la cellule sur 2 feuilles différentes
    Par jeanlouisdep dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/02/2010, 14h15
  3. [XL-2003] Lier deux cellules sur des feuilles différentes
    Par Olivier.p dans le forum Excel
    Réponses: 6
    Dernier message: 21/07/2009, 14h03
  4. Réponses: 2
    Dernier message: 30/10/2008, 13h28
  5. Réponses: 2
    Dernier message: 10/10/2008, 20h35

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