XL 2016 Bulletin Changement Equipes et Jours

pika83

XLDnaute Occasionnel
Bonjour, je cherche sans sucée a faire transférer le contenu de deux cellules après remplissage d'un bulletin primaire.
je vous joint mon fichier afin de vous expliquer ma demande.
D'avance merci pour votre aide.
 

Pièces jointes

  • Bulletin changement equipes et jour.xlsx
    40.8 KB · Affichages: 13

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @pika83 :),
Bonjour, je cherche sans sucée a faire transférer le contenu de deux cellules après remplissage...

Doit on y voir une une connotation vampirique d'origine américaine (Halloween oblige) ou bien une connotation sexuelle d'origine franchouillarde ?

Bon, pas taper, je sors :);):D:p

edit: bonjour @Victor21 ;)
 
Dernière édition:

pika83

XLDnaute Occasionnel
il n'y a aucune connotation, mais étant un novice avec excel j'ai du mal avec les formules .
Jusqu’à présent j'ai toujours eu des réponses positives qui m'ont réellement fait avancer.
C'est pour cela que je me permet de vous demander votre aide avec vous qui êtes des experts d'excel.
Si quelqu'un a une idée sur ma demande, merci.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @pika83 :),

Bon, c'est promis, je ne m'essaierai plus à l'humour avec vous... (quoique :rolleyes: )

Une piste dans le fichier joint. Quand on quitte l'onglet de nom Feuil2 (la feuille du bulletin), l'onglet Feuil1 (la feuille du planning) est automatiquement mis à jour. Le code est dans le module de la feuille ayant pour nom d'onglet Feuil2.
VB:
Private Sub Worksheet_Deactivate()
Dim planning, bulletin, n&, i&, j&, m&, ok As Boolean
   planning = Sheets("Feuil1").Range("e1").CurrentRegion
   n = Sheets("Feuil2").Cells(Rows.Count, "a").End(xlUp).Row
   bulletin = Sheets("Feuil2").Range("a1:d1").Resize(n)

   i = 1
   Do
      If IsNumeric(bulletin(i, 2)) And IsDate(bulletin(i, 3)) Then
         ok = False
         For m = 1 To UBound(planning)
            If planning(m, 3) = bulletin(i, 2) Then
               For j = 1 To UBound(planning, 2)
                  If planning(3, j) = bulletin(i, 3) Then
                     planning(m, j) = bulletin(i, 4)
                     ok = True
                     Exit For
                  End If
               Next j
            End If
            If ok Then Exit For
         Next m
      End If
      i = i + 1
   Loop Until i > UBound(bulletin)
   Sheets("Feuil1").Range("e1").CurrentRegion = planning
End Sub

nota : Attention! Si vous regardez dans la feuille de projet VBA, vous allez voir un point qui risque d'entrainer une confusion.

Une feuille de calcul Excel est affublé de deux noms: L'un appelé Codename qui est attribué par Excel et l'autre nommé Name qui est le nom de l'onglet au bas de la feuille.

Dans votre cas, la feuille de calcul de Name Feuil1 a pour Codename Feuil2 et la feuille de calcul de Name Feuil2 a pour Codename Feuil1.
En toute rigueur, cela est tout a fait permis mais peut être source de grande confusion au codage.
Renommez les noms des feuilles (au niveau des onglets) avec des noms plus parlant. Exemple "Bulletin" et "Planning".
 

Pièces jointes

  • pika83- Bulletin changement equipes et jour- v1.xlsm
    48.9 KB · Affichages: 8
Dernière édition:

pika83

XLDnaute Occasionnel
merci a toi mapomme, ta piste a été judicieuse, j'ai essayé sur plusieurs cellules et cela fonctionne bien. Même si je ne comprend pas tous le VB, c'est effectivement la finalité que j’espérais. J’espère un jour me lancer dans ce domaine pour faire moi même mes attentes.
Tu fais parti des experts d'excel dont je parlais.
Encore bravo a ce forum qui fait avancer et donne de l'espoir a des personnes comme moi qui ont envie découvrir excel.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Dans ma première version, les formules du planning sont toutes converties en valeur.
Pour éviter cette inconvénient (si c'en est un), Préférez la version v1a du fichier joint.
VB:
Private Sub Worksheet_Deactivate()
Dim planning, bulletin, n&, i&, j&, m&, ok As Boolean
   planning = Sheets("Feuil1").Range("e1").CurrentRegion
   n = Sheets("Feuil2").Cells(Rows.Count, "a").End(xlUp).Row
   bulletin = Sheets("Feuil2").Range("a1:d1").Resize(n)

   i = 1
   Do
      If IsNumeric(bulletin(i, 2)) And IsDate(bulletin(i, 3)) Then
         ok = False
         For m = 1 To UBound(planning)
            If planning(m, 3) = bulletin(i, 2) Then
               For j = 1 To UBound(planning, 2)
                  If planning(3, j) = bulletin(i, 3) Then
                     Sheets("Feuil1").Cells(m, j) = bulletin(i, 4)
                     ok = True
                     Exit For
                  End If
               Next j
            End If
            If ok Then Exit For
         Next m
      End If
      i = i + 1
   Loop Until i > UBound(bulletin)
End Sub
 

Pièces jointes

  • pika83- Bulletin changement equipes et jour- v1a.xlsm
    49.5 KB · Affichages: 13
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir MaPomme,
Pika83 a quelques ennuis avec le fichier ci dessus . Voir post :
J'ai regardé ... j'ai refermé.
Autant laissé le Maitre faire ! ;)
 

Discussions similaires

Réponses
1
Affichages
105
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 104
Messages
2 085 330
Membres
102 862
dernier inscrit
Emma35400