Problème avec un copier/coller sans select
Bonjour me revoilà =) ,
maintenant que j'ai terminé une majorité de mes programmes, j'ai décidé de les reprendre afin de supprimer tous les select et activate. Seulement pour le moment je n 'avais pas eu de soucis mais là je coince =s .
A la base j'avais ça comme programme :
Sub Validation()
Dim NombreSalarie As Integer
NombreSalarie = Sheets("cumul d'heures 2017 2018").Range("AD3").Value
Sheets("badgeuse").Select 'aller sur la feuille badgeuse
ActiveSheet.Unprotect "auvinetrh" 'enlever la protection de cette feuille
Sheets("Cumul d'heures 2017 2018").Select 'aller sur la feuille cumul d'heures 2017 2018
ActiveSheet.Unprotect "auvinetrh" 'enlever la protection de cette feuille
Sheets("badgeuse").Select 'retourner sur la feuille badgeuse
Dim i As Integer 'la valeur i est une variable enregistré ligne du tableau des chef d equipe
Dim MaPlage As Range 'la valeur maplage est une variable enregistré
Dim j As Integer 'enregistrement de ligne aléatoire
If (Sheets("Cumul d'heures 2017 2018").Range("AA3").Value <> 0) Then 'si la cellule l3 à une valeur différente de zéro faire
i = Sheets("Cumul d'heures 2017 2018").Range("AA3").Value ' i= valeur de l3
Range(Cells(8, 4), Cells(8, NombreSalarie)).Select 'on selectionne le tableau de d35 à y40
Selection.Copy ' on le copie
Sheets("Cumul d'heures 2017 2018").Select 'on retourne sur la feuille archive
Set MaPlage = Range(Cells(i, 4), Cells(i, NombreSalarie))
MaPlage.Select 'on selectionne le tableau de d(9+k) à y(14+k)
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False 'on le colle avec ctrl alt v on mode valeur et format uniquement
Sheets("Badgeuse").Select
ActiveSheet.Protect "auvinetrh", True, True, True
End If
ActiveSheet.Protect "auvinetrh", True, True, True 'on reprotege la feuille cumul d 'heures 2017
Sheets("Badgeuse").Select 'on selectionne la feuille badgeuse
Range("D37").Select 'on selectionne d37
ActiveCell.FormulaR1C1 = "1" 'on met la valeur 1
For j = 4 To NombreSalarie + 1 'pour j de 4 à NombreSalarie
Cells(37, j).Select 'on selectionne la cellule j,38 (colonneligne)
Selection.Copy 'copier cette cellule
Cells(37, j + 1).Select 'on selectionne la cellule j+1,37 (colonneligne)
ActiveSheet.Paste 'feuille active
Next 'suite de la boucle on incrémente de 1
Range("A1").Select 'on selectionne a1
ActiveSheet.Protect "auvinetrh", True, True, True 'on reprotege la feuille badgeuse
End Sub 'finOuai ca pique je sais =s mais bon ça marche nickel à part le fait que ça ressemble à une guirlande de noël lorsque je lance la procédure
Après un petit nettoyage j'obtiens ça :
Sub Validation()
Dim NombreSalarie As Integer
NombreSalarie = Sheets("cumul d'heures 2017 2018").Range("AD3").Value
Sheets("badgeuse").Unprotect "auvinetrh" 'enlever la protection de cette feuille
Sheets("Cumul d'heures 2017 2018").Unprotect "auvinetrh" 'enlever la protection de cette feuille
Dim i As Integer 'la valeur i est une variable enregistré ligne du tableau des chef d equipe
Dim MaPlage As Range 'la valeur maplage est une variable enregistré
Dim j As Integer 'enregistrement de ligne aléatoire
If (Sheets("Cumul d'heures 2017 2018").Range("AA3").Value <> 0) Then 'si la cellule l3 à une valeur différente de zéro faire
i = Sheets("Cumul d'heures 2017 2018").Range("AA3").Value ' i= valeur de l3
Range(Cells(8, 4), Cells(8, NombreSalarie)).Copy Destination:=Sheets("Cumul d'heures 2017 2018").Select 'on retourne sur la feuille archive
Set MaPlage = Range(Cells(i, 4), Cells(i, NombreSalarie))
Sheets("Cumul d'heures 2017 2018").Protect "auvinetrh", True, True, True
End If
For j = 4 To NombreSalarie + 1 'pour j de 4 à NombreSalarie
Sheets("Badgeuse").Cells(37, j).Value = 1
Next 'suite de la boucle on incrémente de 1
Sheets("Badgeuse").Protect "auvinetrh", True, True, True 'on reprotege la feuille badgeuse
End Sub 'finMais la problème le copier coller marche pas =(
j'ai tenté d'autre alternative du genre :
with sheets("Cumul d'heures 2017 2018")
sheets("Badgeuse").Range("D8:" & NombreSalarie & "8").copy: .Paste .Range("D" & i & ":" & NombreSalarie & i)
end withMais là c'est carrément mon range qui marche pas ...
Je fais un nettoyage car mon Excel beug vachement par exemple j'ai créé une fonction et des fois sans pour aucune raison la cellule écrit #VALEUR au lieu du résultat de la fonction. Le plus drôle c'est que pour débuger il suffit de masquer et afficher la cellule pour que le résultat revienne (le beug n'est pas systématique). Ensuite sur toutes les feuilles j'ai un autre beug, mes pages sont toutes protégé et lorsque je souhaite modifier une cellule (non verrouillé) et bien lorsque je la modifie je change de feuille de façon systématique alors qu'il y a aucune raison pour que cela arrive.
Je suppose que c 'est problème sont du à mes maccro rempli de activate et de select en tout genre, enfin j'espère ^^.
Quelqu'un à un solution pour ce fichu copier coller ^^ ?
Bonjour,
quel est la valeur de la variable NombreSalarie ?
par exemple si NombreSalarie est un chiffre,
i = 13
NombreSalarie = 5
With Sheets("Cumul d'heures 2017 2018")
Sheets("Badgeuse").Range("D8:" & Cells(8, NombreSalarie).Address).Copy .Range("D" & i & ":" & Cells(i, NombreSalarie).Address)
End With