Copier plage contiguë d'un onglet sur autre onglet mais avec condition

Bonjour

Petit besoin d'un coup de main j'ai crée un code qui doit me permettre de copier une plage en fonction de condition sur un autre onglet mais ca ne fonctionne pas.

J'ai un planning type ( lundi au dimanche ) avec des horaires pour chaque jour et je voudrais que ce planning type se copie automatiquement dans un planning mensuel qui se trouve sur un autre onglet avec des dates suite à un bouton "intégrer".J'ai crée une boucle mais qui ne colle pas mes données dans le planning avec les dates snifff. Pourriez vous m'aider pour corriger ma boucle ou trouver une solution équivalente . Ci joint mon fichier exemple et mon code qui pose problème. Merci d'avance pour votre aide.

Sub imp_planning() ' copier les horaires du planning type dans l'onglet détail sur les jours correspondants
Dim j As Long
Dim x As Long
Dim marecherche As String ' ma plage de valeur à aller chercher
    With Sheets("Détail")
        For j = 2 To 50 ' Comment déterminer la dernière colonne non masquées car en fonction des mois le nombre de colonne est différent ?
            marecherche = Format(Cells(6, j), "dddd") ' la valeur recherchée
            x = Application.Match(marecherche, Sheets("Planning type").Rows(8), False)
            Sheets("Détail").Range(Cells(7, j), Cells(16, j + 1)) = Sheets("Planning type").Range(Cells(9, x), Cells(18, x + 1)) ' colLage ne fonctionne pas ?
            Sheets("Détail").Range(Cells(23, j), Cells(32, j + 1)) = Sheets("Planning type").Range(Cells(25, x), Cells(35, x + 1)) ' colLage ne fonctionne pas ?
        Next j
    End With
End Sub
18planning.xlsm (34.70 Ko)

Bonjour,

Essayez ceci:

Sub imp_planning() ' copier les horaires du planning type dans l'onglet détail sur les jours correspondants
    Dim j As Long, x As Long
    Dim MaRecherche As String ' ma plage de valeur à aller chercher
    Dim f1 As Worksheet, f2 As Worksheet

    Set f1 = Sheets("Planning type") 'mise en mémoire des variables "feuilles"
    Set f2 = Sheets("Détail")
    f2.Cells(2, "B").FormulaR1C1 = "=EDATE(R[-1]C,1)-1-R[-1]C+1" 'formule pour compter le nombre de jours du mois
    Nb_Jours = f2.Cells(2, "B") 'nombre de jours du mois à traiter
    DerCol_f2 = (Nb_Jours * 2) 'dernière colonne en fonction du nombre de jours
    For j = 2 To DerCol_f2 Step 2
        MaRecherche = Format(f2.Cells(6, j), "dddd") ' la valeur recherchée
        x = Application.Match(MaRecherche, f1.Range("A8:O8"), 0)
        Range(f2.Cells(7, j), f2.Cells(16, j + 1)).Value = Range(f1.Cells(9, x), f1.Cells(18, x + 1)).Value
        Range(f2.Cells(23, j), f2.Cells(32, j + 1)).Value = Range(f1.Cells(25, x), f1.Cells(35, x + 1)).Value
    Next j
    'Libération de la mémoire
    Set f1 = Nothing
    Set f2 = Nothing
End Sub

Cdlt

Bonjour. Merci Arturo83 pour le code cela m'a aidé grandement. Par contre j'ai une erreur sur la variable x ( erreur 2042 ) et je ne sais pas comment la résoudre .

Il me marque aussi une erreur 13 d'incompatibilité. Si vous pouviez à nouveau m'aider ce serait cool. Encore un grand merci.

Bonjour,

Comme je n'arrive pas à reproduire les erreurs que vous constaté, je vous retourne le fichier qui chez moi fonctionne bien.

Cdlt

Rechercher des sujets similaires à "copier plage contigue onglet condition"