Copier cellules en fonction d'une cellule

Bonjour à tous,

Je bloque dans un code, pourriez-vous m'aider

Je cherche à copier les cellules de la semaine en fonction la case J11.

Avec une recherche je trouve la première case de la cellule fusionner qui va de J11 à P11 pour la semaine 2 . Les cellules changent si je change de semaine. Par exemple si c'est la semaine 3 ça va de Q11 à W11.

Voici mon code pour la recherche

Set Annuel = Worksheets("Congés et HotLine 2015")
S = "Semaine" & " " & Cible.Range("B3")
With Annuel
Annuel.Select
    TrouveSemaine = Cells.Find(What:=S, _
    After:=ActiveCell, _
    LookIn:=xlValues, _
    LookAt:=xlWhole, _
    SearchOrder:=xlByRows, _
    SearchDirection:=xlNext, _
    MatchCase:=True, _
    SearchFormat:=False).Address

'Test du résultat de la recherche
If TrouveSemaine = Null Then
    MsgBox "pas trouvé"
Else
MsgBox TrouveSemaine
End If
planning

A la place de MsgBox TrouveSemaine

essayez plutôt ceci

Range(.cells(trouve.row,1),.cells(trouve.row,5)).select

Pour visualiser ce qu'il se passe, puis vous avisez en fonction

Merci de m'aider encore une fois force rouge, j'ai essayé le code que vous m'avez donné et il me renvoi une erreur 424 objet requis.

If TrouveSemaine = Null Then
    MsgBox "pas trouvé"
Else
Range(.Cells(TrouveSemaine.Row, 1), .Cells(TrouveSemaine.Row, 5)).Select

End If

ou

If TrouveSemaine = Null Then
    MsgBox "pas trouvé"
Else
Range(.Cells(Trouve.Row, 1), .Cells(Trouve.Row, 5)).Select

End If

oui oups c'était pas "trouve" mais "trouvesemaine" pardon...l'habitude. Vérifier comment est déclarée Annuel dans la déclaration des variables. Elle doit être de se type là Dim Annuel as Worksheet. Peut-être que ça peut venir de là...

C'est le bon type

Le code complet

  Sub BouclePlagesCellules()
    'Déclaration du type de variables
    Dim S As String
    Dim Annuel As Worksheet, Cible As Worksheet

    'Déclaration des variables des feuilles
    Set Cible = Worksheets("S1")
    Set Annuel = Worksheets("Congés et HotLine 2015")
    With Cible

    'Copie du modèle S1
    Cible.Select
    Cible.Cells.Select
    Selection.Copy

End With
'Début de la boucle de création des feuilles par semaine
For i = 2 To 53

' Semai = "Semaine" & " " & Sheets("S1").Range("B2")
' Set Ws = Sheets.Add(After:=Worksheets(Worksheets.Count))

' ActiveSheet.Name = "S" & i
' ActiveSheet.Cells.Select
' ActiveSheet.Paste

' Range("B2") = i

'Attribution de la variable S au numéro de semaine
S = "Semaine" & " " & Cible.Range("B3")

With Annuel
Annuel.Select
    TrouveSemaine = Cells.Find(What:=S, _
    After:=ActiveCell, _
    LookIn:=xlValues, _
    LookAt:=xlWhole, _
    SearchOrder:=xlByRows, _
    SearchDirection:=xlNext, _
    MatchCase:=True, _
    SearchFormat:=False).Address

'Test du résultat de la recherche
If TrouveSemaine = Null Then
    MsgBox "pas trouvé"
Else
Range(.Cells(TrouveSemaine.Row, 1), .Cells(TrouveSemaine.Row, 5)).Select

End If

End With
Next i

End Sub

Essayez de déclarer S en variant et non en string...

J'ai modifié en variante mais malheureusement ça m'indique toujours la même erreur .

Envoyez votre fichier et accessoirement

Annuel.Select

TrouveSemaine = Cells.Find(What:=S, _

After:=ActiveCell, _

LookIn:=xlValues, _

LookAt:=xlWhole, _

SearchOrder:=xlByRows, _

SearchDirection:=xlNext, _

MatchCase:=True, _

SearchFormat:=False).Address supprimé ".adress"

Merci j'ai testé en supprimant address rien à faire il ne veux toujours pas prendre la ligne ajouté .

Je joint mon fichier pour plus de compréhension la macro est dans module 1

4planningv5-0.xlsm (120.78 Ko)

Jadis je t'ai proposé une méthode find fonctionnelle, qu'en as tu fais ?

Annuel.Select
TrouveSemaine = Cells.Find(What:=S, _
After:=ActiveCell, _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=True, _
SearchFormat:=False).Address supprimé ".adress"

Elle est dans Module1 sans le .Address

Je me rapproche d'une solution en faite si je déclare la variable TrouveSemaine en type range c'est la fonction find qui est en echec, si je la déclare en variant ou string c'est la ligne suivante qui est en erreur.

Range(.Cells(TrouveSemaine.Row, 1), .Cells(TrouveSemaine.Row, 5)).Select

Trouvesemaine doit être déclaré en range car c'est ce que va retourner la méthode find, un range.

j'ai réussi à utiliser le code pour faire ce que je recherche merci beaucoup.

Sub BouclePlagesCellules()

    'Déclaration du type de variables
    Dim S As Variant, i As Integer
    Dim Annuel As Worksheet, Cible As Worksheet
    Dim TrouveSemaine As Range
    Dim debutligne As Integer
    Dim finligne As Integer
    Dim debutcolonne As Integer
    Dim fincolonne As Integer
    Dim Cellstart As Range, test As Object
    'Déclaration des variables des feuilles
    Set Cible = Worksheets("S1")
    Dim s1 As String
    Set Annuel = Worksheets("Congés et HotLine 2015")
    With Cible

    'Copie du modèle S1
    Cible.Select
    Cible.Cells.Select
    Selection.Copy

End With
'Début de la boucle de création des feuilles par semaine
For i = 2 To 53
' Semai = "Semaine" & " " & Sheets("S1").Range("B2")
' Set Ws = Sheets.Add(After:=Worksheets(Worksheets.Count))

' ActiveSheet.Name = "S" & i
' ActiveSheet.Cells.Select
' ActiveSheet.Paste

' Range("B2") = i

'Attribution de la variable S au numéro de semaine
S = "Semaine" & " " & Cible.Range("B3")
s1 = "test"
With Annuel
Annuel.Activate
   Set TrouveSemaine = .Cells.Find(What:=S, _
    After:=ActiveCell, _
    LookIn:=xlValues, _
    LookAt:=xlWhole, _
    SearchOrder:=xlByRows, _
    SearchDirection:=xlNext, _
    MatchCase:=True, _
    SearchFormat:=False)
End With

'Test du résultat de la recherche
If TrouveSemaine = Null Then
    MsgBox "pas trouvé"
Else
'Variables de définition d'un plage
debutligne = TrouveSemaine.Row + 1
finligne = TrouveSemaine.Row + 21
debutcolonne = TrouveSemaine.Column
fincolonne = TrouveSemaine.Column + 6

Range(Cells(debutligne, debutcolonne), Cells(finligne, fincolonne)).Select

End If

Next i
End Sub
Rechercher des sujets similaires à "copier fonction"