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
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