Export données

Bonjour,

j'ai besoin de votre aide,

j'ai beau vouloir fair tout seul mais j'ai beaucoup de lacunes

D'un planning (onglet janvier) je voudrais faire un export vers feuil2 en positionnant les noms dans les lignes et colonnes respectives.

(comme exemple ligne 5 de feuil2).

Si la cellule de janvier est "O" on repositionne en colonne B et jour correspondant

Si la cellule de janvier est "F" on repositionne en colonne D et jour correspondant

Si la cellule de janvier est vide on repositionne en colonne C et jour correspondant

Merci de votre aide

tseoy

Bonjour,

les dates sur l'onglet JANVIER font référence à l'année 2016, voir la valeur de la cellule B2

les dates sur l'onglet Feuil2 font référence à l'année 2021, voir la valeur de la cellule A5

voici un exemple pour débuter la vérification des dates avant d'aller plus loin.

pour la suite il faudra détailler plus en détail.

Bonjour,

je vous remercie.

Il est exact qu'il faut commencer avec les bonnes données.mea culpa

J'ai besoin de transposer le planning de l'onglet janvier vers les colonnes correpondantes sur l'onglet test.

La colonne B de l'onglet test correspond a la récupération des noms si la cellule de l'onglet JANVIER contient O

La colonne C de l'onglet test correspond a la récupération des noms si la cellule de l'onglet JANVIER ne contient rien

La colonne B de l'onglet test correspond a la récupération des noms si la cellule de l'onglet JANVIER contient F

Merci encore de votre aide

cordialement

Bonjour tseoy (il me semble me souvenir de ton pseudo, bonjour Isabelle

Au-delà de ta simple question de transposition, on entrevoit vite qu'il va y avoir un onglet par mois !

Je te proposerais bien plutôt de faire en sorte que

  • l'onglet mois soit générique et puisse s'adapter à n'importe quelle période
  • que les infos soient reportées dans une BdD
  • et que ton onglet Feuil2 soit simplement un TCD

bonjour Steelson,

oui tu m'as bien aidé sur un gros fichier.

Je comprends bien ton idée mais je n'ai pas encore toutes vos compétences.

Je vais me replonger dans le dossier ou tu m'as aidé et en tirer des lignes de code pour le BdD et le TCD.

Merci

cordialement

Bonjour,

je vais reprendre ce sujet en essayant de te proposer quelque chose de simple mais efficient ...

Bonjour STEELSON

je te remercie de reflechir à mon dossier.

Comme tu me l'avais suggéré j'ai commencé à travailler sur la première partie, un calendrier générique.

Quid de l'enregistrement des données lorsque le mois change?

Je te joins le début de mon travail

Cordialement

tseoy

9planning-2020.xlsm (21.02 Ko)

Joli !

Une question : les 2 parties du tableau ... c'est "jour" et "nuit" ? et quelles sont les données dans les cases ? O, F et X ?

Bonjour STEELSON,

La deuxième partie du tableau se sont des chefs, Ils n'y a pas de positionnement, mais on doit connaitre leur planning à l'année.

On doit prendre en compte les lignes 10 à 19 pour l'extraction.

Le O veut dire "ouverture" et va dans la colonne B de l'onglet "test" du premier envoi

LE F veut dire "fermeture" et va dans la colonne D "" "" "" "" "" ""

les cases vides veulent dire "journée" et vont dans la colonne C de l'onglet "test" du premier envoi

Merci de ton aide

tseoy

Suite.

Si dans la cellule il y a "O" alors on recupere le nom de la colonne B pour le positionner dans la colonne B de l'onglet "test" correspondant à la date

Si dans la cellule il y a "F"alors on recupere le nom de la colonne B pour le positionner dans la colonne D de l'onglet "test" correspondant à la date

Si la cellule est vide alors on recupere le nom de la colonne B pour le positionner dans la colonne C de l'onglet "test

correspondant à la date

J'espère avoir été clair dans mes explications

merci

tseoy

Si la cellule est vide alors on recupere le nom de la colonne B pour le positionner dans la colonne C de l'onglet "test

correspondant à la date

Cela veut dire qu'il peut y avoir 10 noms (moins les O et F) dans une cellule ?

Bonsoir,

dans la cellule B il y a deux noms par jour (o=ouverture)

dans la cellule D il y a deux noms par jour (F=fermeture)

dans la colonne C le maximum est 5 noms.

Nous travaillons un weekend sur deux et on récupère nos repos en semaine.

Merci de ton aide

cordialement

tseoy

Bonjour,

à tester

j'ai repris la terminologie de l'autre fichier : F, O ou X (en majuscule)

4planning-ofx.xlsm (39.66 Ko)

Merci STEELSON.

J'ai voulu faire évoluer le fichier je me retrouve avec une erreur.

Le nom des agents lignes 22 , 23 , 24 de calendrier doivent se retrouver dans la colonne E de recap.

Dans cette feuille j'ai remplacé la Cellule E4 par "N"

J'ai voulu l'intégrer dans ta formule, mais j'ai un problème de retour.

MErci

tseoy

Le nom des agents lignes 22 , 23 , 24 de calendrier doivent se retrouver dans la colonne E de recap.

Dans cette feuille j'ai remplacé la Cellule E4 par "N"

ok, voici l'évolution

15planning-ofxn.xlsm (40.37 Ko)

J'ai voulu faire évoluer le fichier je me retrouve avec une erreur.

J'ai voulu l'intégrer dans ta formule, mais j'ai un problème de retour.

C'est-à-dire ?

Merci beaucoup steelson,

ca fonctionne parfaitement.

Mon problème, quand j'ai voulu faire évoluer le fichier, je n'avais pas scinder le gestionnaire de noms jour et nuit.

tseoy

Steelson,

désolé, petit problème.

lors d'un test sur la ligne 23 de l'onglet "calendrier"du mois de janvier, Je ne peux supprimer les N.

Ils réaparaissent quand je vais vérifier sur l'onglet récap ou le nom (ici "L") reste en continue

Merci

Ah oui désolé, j'ai été un peu trop vite !

Dans la feuille Calendrier, remplace la macro par ceci :

Private Sub Worksheet_Activate()
' en cas de changement direct dans BdD
With Sheets("BdD").ListObjects(1)
    Application.EnableEvents = False
        Range("_jour").ClearContents
        Range("_nuit").ClearContents
        For Each cel In .ListColumns("ID").DataBodyRange
            If cel.Offset(0, 2) <> 0 And cel.Offset(0, 3) <> 0 Then Cells(cel.Offset(0, 2), cel.Offset(0, 3)) = cel.Offset(0, 1)
        Next
    Application.EnableEvents = True
End With
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, id As String

With Sheets("BdD").ListObjects(1)

    If Not Intersect(Target, Range("_jour")) Is Nothing Then
        For Each cel In Intersect(Target, Range("_jour"))
            id = Cells(cel.Row, "C") & "|" & Cells(8, cel.Column) * 1
            Set c = .ListColumns("ID").Range.Find(id, LookIn:=xlValues)
            If c Is Nothing Then
                .ListRows.Add
                .ListColumns("Nom").DataBodyRange.Rows(.ListRows.Count).Value = Cells(cel.Row, "C")
                .ListColumns("Date").DataBodyRange.Rows(.ListRows.Count).Value = Cells(8, cel.Column)
                .ListColumns("OFX").DataBodyRange.Rows(.ListRows.Count).Value = UCase(cel.Value)
            Else
                .ListColumns("OFX").DataBodyRange.Rows(c.Row - .HeaderRowRange.Row).Value = cel.Value
            End If
        Next

    ElseIf Not Intersect(Target, Range("_nuit")) Is Nothing Then
        For Each cel In Intersect(Target, Range("_nuit"))
            id = Cells(cel.Row, "C") & "|" & Cells(8, cel.Column) * 1
            Set c = .ListColumns("ID").Range.Find(id, LookIn:=xlValues)
            If c Is Nothing Then
                .ListRows.Add
                .ListColumns("Nom").DataBodyRange.Rows(.ListRows.Count).Value = Cells(cel.Row, "C")
                .ListColumns("Date").DataBodyRange.Rows(.ListRows.Count).Value = Cells(8, cel.Column)
                .ListColumns("OFX").DataBodyRange.Rows(.ListRows.Count).Value = IIf(cel.Value = "", "", "N")
            Else
                .ListColumns("OFX").DataBodyRange.Rows(c.Row - .HeaderRowRange.Row).Value = IIf(cel.Value = "", "", "N")
            End If
        Next

    ElseIf Not Intersect(Target, Range("C2:C3")) Is Nothing Then
        Application.EnableEvents = False
            Range("_jour").ClearContents
            Range("_nuit").ClearContents
            For Each cel In .ListColumns("ID").DataBodyRange
                If cel.Offset(0, 2) <> 0 And cel.Offset(0, 3) <> 0 Then Cells(cel.Offset(0, 2), cel.Offset(0, 3)) = cel.Offset(0, 1)
            Next
        Application.EnableEvents = True
    End If

End With

End Sub

Sub reactiver()
Application.EnableEvents = True
End Sub

Merci Steelson,

afin de progresser, peux-tu m'expliquer la différence entre ces deux lignes de codes ?

Je pense que la modification vient de là

.ListColumns("OFX").DataBodyRange.Rows(.ListRows.Count).Value = "N" et

.ListColumns("OFX").DataBodyRange.Rows(.ListRows.Count).Value = IIf(cel.Value = "", "", "N")

Bonne soirée

tseoy

encore moi,

les données reste figés sur RECAP;

J'ai l'impression que le BdD ne se régénère pas.

merci

tseoy

Rechercher des sujets similaires à "export donnees"