Microsoft 365 Recopie ligne avec un code GOOGLE SHEET

Moreno076

XLDnaute Impliqué
Bonjour à tous.
Ci-joint je mets un fichier excel (qui est en fait un GOOGLE SHEET mais je ne peux pas le mettre ici).
Je souhaiterais que dans chaque onglet des mois dés qu'on rentre un code dans la colonne C ca recopie la ligne allant des colonnes D jusqu'à W (copie valeur pas mise en forme formules etc...) qui se trouve dans l'onglet SC. Mais attention avec un même code les heures peuvent différés, selon que ce soit du lundi au vendredi / samedi /dimanche ou férié.

J'aurais besoin d'aide pour pouvoir faire celà.

Merci pour votre aide
 

Pièces jointes

  • Copie de Heures.xlsx
    614.6 KB · Affichages: 2
Dernière édition:

Franc58

XLDnaute Occasionnel
Salut, c'est un classeur excel mais qui sera destiné à google sheet ? Si c'est le cas, google sheet n'accepte pas les macros vba, il faudra le faire en javascript.
Autre question, tu veux recopier de D à W, mais dans ta feuille SC il y a aussi des valeurs en B et C, tu ne veux pas les recopier ?
 

Moreno076

XLDnaute Impliqué
Salut, c'est un classeur excel mais qui sera destiné à google sheet ? Si c'est le cas, google sheet n'accepte pas les macros vba, il faudra le faire en javascript.
Autre question, tu veux recopier de D à W, mais dans ta feuille SC il y a aussi des valeurs en B et C, tu ne veux pas les recopier ?
Salut oui tout à fait c'est destiné à google sheet.
Dans le SC c'est là que je vais importer la base donnant les correspondances. Concrètement lorsque je vais taper un code dans une colonne C d'un mois ca ira chercher la ligne dans l'onglet SC. Donc la valeur de la colonne C oui on peut éventuellement la recopier oui mais c'est la même que saisi. Pour la colonne B non elle ne sera pas recopier puis dans chaque mois j'aurais la date exacte. Il y a 3 horaires différents selon que ce soit du lundi au dimanche / samedi / dimanche ou jour férié. (sinon on peut jouer aussi sur la couleur de police des mois (rouge / mauve/ vert) pour faire le distingo mais le probleme c'est que le même code à mettre dans la colonne C. J'espère être clair pas évident à expliquer.

Merci.
 

Franc58

XLDnaute Occasionnel
J'avais compris l'inverse. Donc quand tu tapes un code dans la colonne "Service" d'une feuille, tu veux récupérer la ligne correspondante dans ta feuille "SC". Mais dans ton classeur exemple, ta colonne "Service" de "SC" contient 3 fois le même code BX01, lequel choisir alors ?
 

Moreno076

XLDnaute Impliqué
Voilà c'est tout à fait ça. Selon les jours si ca tombe un lundi ou mercredi par exemple ce sera la première ligne. Le code est commun c'est ça la difficulté.
On peut jouer sur la police sinon. Si la police est rouge alors ligne correspondante.
Je vais travailler je serais de retour ce soir. Merci à toi.
 

Franc58

XLDnaute Occasionnel
Salut, voici une proposition VBA. Comme je te l'ai dit, ça ne fonctionnera pas sous Google Sheets, il faut du Javascript et mes connaissances de ce langage sont insuffisantes pour ta demande. Peut-être quelqu'un pourra traduire du VBA vers Javascript, je ne peux rien faire de plus.

VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim wsSC As Worksheet
    Dim rng As Range
    Dim dayOfWeek As String
    Dim matchRow As Long

    ' Définir la feuille "SC"
    Set wsSC = ThisWorkbook.Sheets("SC")

    ' Vérifier si la cellule modifiée est dans la colonne C
    If Target.Column = 3 Then
        ' Rechercher le code dans la feuille "SC"
        Set rng = wsSC.Range("C:C").Find(Target.Value, LookIn:=xlValues)

        ' Si le code est trouvé
        If Not rng Is Nothing Then
            ' Extraire le jour de la semaine de la date en colonne B
            dayOfWeek = Format(Target.Offset(0, -1).Value, "dddd")

            ' Convertir le jour de la semaine en catégorie
            Select Case dayOfWeek
                Case "lundi", "mardi", "mercredi", "jeudi", "vendredi"
                    dayOfWeek = "Lundi au vendredi"
                Case "samedi"
                    dayOfWeek = "Samedi"
                Case "dimanche"
                    dayOfWeek = "Dimanche"
            End Select

            ' Trouver la catégorie correspondante dans la feuille "SC"
            matchRow = Application.Match(dayOfWeek, wsSC.Range("B:B"), 0)

            ' Si la catégorie est trouvée
            If Not IsError(matchRow) Then
                ' Copier la ligne de D à W
                wsSC.Range("D" & matchRow & ":W" & matchRow).Copy

                ' Coller dans la même ligne que la cellule contenant le code recherché
                Target.Offset(0, 1).PasteSpecial xlPasteValues
            End If
        End If
    End If

    Application.CutCopyMode = False
End Sub
 

Moreno076

XLDnaute Impliqué
Salut, voici une proposition VBA. Comme je te l'ai dit, ça ne fonctionnera pas sous Google Sheets, il faut du Javascript et mes connaissances de ce langage sont insuffisantes pour ta demande. Peut-être quelqu'un pourra traduire du VBA vers Javascript, je ne peux rien faire de plus.

VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim wsSC As Worksheet
    Dim rng As Range
    Dim dayOfWeek As String
    Dim matchRow As Long

    ' Définir la feuille "SC"
    Set wsSC = ThisWorkbook.Sheets("SC")

    ' Vérifier si la cellule modifiée est dans la colonne C
    If Target.Column = 3 Then
        ' Rechercher le code dans la feuille "SC"
        Set rng = wsSC.Range("C:C").Find(Target.Value, LookIn:=xlValues)

        ' Si le code est trouvé
        If Not rng Is Nothing Then
            ' Extraire le jour de la semaine de la date en colonne B
            dayOfWeek = Format(Target.Offset(0, -1).Value, "dddd")

            ' Convertir le jour de la semaine en catégorie
            Select Case dayOfWeek
                Case "lundi", "mardi", "mercredi", "jeudi", "vendredi"
                    dayOfWeek = "Lundi au vendredi"
                Case "samedi"
                    dayOfWeek = "Samedi"
                Case "dimanche"
                    dayOfWeek = "Dimanche"
            End Select

            ' Trouver la catégorie correspondante dans la feuille "SC"
            matchRow = Application.Match(dayOfWeek, wsSC.Range("B:B"), 0)

            ' Si la catégorie est trouvée
            If Not IsError(matchRow) Then
                ' Copier la ligne de D à W
                wsSC.Range("D" & matchRow & ":W" & matchRow).Copy

                ' Coller dans la même ligne que la cellule contenant le code recherché
                Target.Offset(0, 1).PasteSpecial xlPasteValues
            End If
        End If
    End If

    Application.CutCopyMode = False
End Sub
rebonsoir. D'accord merci quand même de ton aide.
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 298
Membres
103 171
dernier inscrit
clemm