Selectionner cellules en fonction de critere, copier, coller valeur.

moi_ces_moi

XLDnaute Nouveau
Bonjour,

est il possible de m'aider ? Je voudrai bien faire ceci en VBA.

Si on inscrit dans la feuille "Parametres" le nom de "Carine" dans A3, la date de debut "01-01-20" dans B3 et la date de fin "10-10-20" dans C3.
Et que le clic sur un bouton
Je voudrai bien que çà :
-retirer la protection de la feuille
-sélectionner dans la feuille "année" les cellules de B16 à K16 (cellules en face du nom "Carine" de la date 01/01/20 au 10/01/20)
-copier
-coller la valeur (pas la formule)
-replacer la protection

et dans la feuille "Année cache" (feuille qui est masquée)
-sélectionner dans la feuille "année" les cellules de B16 à K16 (cellules en face du nom "Carine" de la date 01/01/20 au 10/01/20)
-copier
-coller la valeur (pas la formule)

et faire le meme dans la feuille "Absence"
-retirer la protection de la feuille
-sélectionner dans la feuille "année" les cellules de B19 à K19 (cellules en face du nom "Carine" de la date 01/01/20 au 10/01/20)
-copier
-coller la valeur
-replacer la protection (pas la formule)


Merci d'avance
ps: J'ai du supprimer pas mal de page pour pouvoir poster mon fichier donc il y a pas mal de #REF! désolé.
 

Pièces jointes

  • Question planning V20 avec macro.xlsm
    902.5 KB · Affichages: 7

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
En fait c'est trois fois la même structure.
Essayez ça pour Année cache, ensuite adaptez pour les deux autres :
VB:
Sub ExCopyPaste()
    Sheets("Année cache").Activate
    ActiveSheet.Unprotect
    Range("B16:K16").Copy
    Range("B16:K16").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    ActiveSheet.Protect
End Sub
J'ai supposé une protection sans mot de passe.
 

fanfan38

XLDnaute Barbatruc
Bonsoir
Moi je propose comme macro à mettre sur le bouton
Dans ce cas pas besoin d'enlever la protection...

Sub cherche()
Dim c As Range, col As Integer, varcol As Integer
'recherche le nom sur la feuille année
Set c = Sheets("Année").Columns(1).Find(what:=Range("a3").Value, LookIn:=xlValues)
If c Is Nothing Then Exit Sub
'recopie les données qui correspondent a la date de debut et a la date de fin...
varcol = 4
For col = Range("b3").Value - Sheets("Année").Range("B1").Value To Range("c3").Value - Sheets("Année").Range("B1").Value
Cells(3, varcol).Value = Sheets("Année").Cells(c.Row, varcol).Value
varcol = varcol + 1
Next
End Sub
A+ François
 

moi_ces_moi

XLDnaute Nouveau
Bonsoir,
En fait c'est trois fois la même structure.
Essayez ça pour Année cache, ensuite adaptez pour les deux autres :
VB:
Sub ExCopyPaste()
    Sheets("Année cache").Activate
    ActiveSheet.Unprotect
    Range("B16:K16").Copy
    Range("B16:K16").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    ActiveSheet.Protect
End Sub
J'ai supposé une protection sans mot de passe.

merci pour la réponse mais ça ne sélectionne pas les cellules en fonction du nom écrit en A3.
 

moi_ces_moi

XLDnaute Nouveau
Bonsoir
Moi je propose comme macro à mettre sur le bouton
Dans ce cas pas besoin d'enlever la protection…

VB:
Sub cherche()
Dim c As Range, col As Integer, varcol As Integer
'recherche le nom sur la feuille année
  Set c = Sheets("Année").Columns(1).Find(what:=Range("a3").Value, LookIn:=xlValues)
  If c Is Nothing Then Exit Sub
'recopie les données qui correspondent a la date de debut et a la date de fin...
  varcol = 4
  For col = Range("b3").Value - Sheets("Année").Range("B1").Value To Range("c3").Value - Sheets("Année").Range("B1").Value
     Cells(3, varcol).Value = Sheets("Année").Cells(c.Row, varcol).Value
     varcol = varcol + 1
  Next
End Sub

A+ François

Bonsoir François
Votre code fonctionne pas mal.
Mais il copie les cellules sur la feuille "parametre" et je souhaite copier sur la feuille "année".

Je ne sais pas si j'arrive a bien décrire ce que je souhaite ?

merci pour cette réponse aussi rapide
 

fanfan38

XLDnaute Barbatruc
Bonjour,
Salut Sylvanu
là j'ai pas tout compris.... Tu écris:
-sélectionner dans la feuille "année" les cellules de B16 à K16 (cellules en face du nom "Carine" de la date 01/01/20 au 10/01/20)
et maintenant tu me dis:
je souhaite copier sur la feuille "année". ..
Pour le reste on verra après... comme le dit Sylvanu "En fait c'est trois fois la même structure. "
A+ François
 

moi_ces_moi

XLDnaute Nouveau
Bonjour,
Salut Sylvanu
là j'ai pas tout compris.... Tu écris:
-sélectionner dans la feuille "année" les cellules de B16 à K16 (cellules en face du nom "Carine" de la date 01/01/20 au 10/01/20)
et maintenant tu me dis:
je souhaite copier sur la feuille "année". ..
Pour le reste on verra après... comme le dit Sylvanu "En fait c'est trois fois la même structure. "
A+ François

En faite, en fonction des infos de la feuille "parametre" au cellule A3, B3 et C3. (cellules en face du nom "Carine" de la date 01/01/20 au 10/01/20)
Ca va dans la feuille "année" en B16 à K16 retirer la formule dans chaque cellule et mettre la valeur.
Et le faire dans plusieurs feuille.

Est ce que c'est plus claire pour vous ?
 

fanfan38

XLDnaute Barbatruc
Bonjour,
Si j'ai tout compris les données à copier sont sur la feuille paramètre en d3 et suivante...
J'espère avoir répondu à ton problème...
Attention les données de Carine pour les 3 feuilles ont été changé pour mes essais

A+ François
 

Pièces jointes

  • Question planning V20 avec macro.xlsm
    953.6 KB · Affichages: 9

moi_ces_moi

XLDnaute Nouveau
Bonjour,
Si j'ai tout compris les données à copier sont sur la feuille paramètre en d3 et suivante...
J'espère avoir répondu à ton problème...
Attention les données de Carine pour les 3 feuilles ont été changé pour mes essais

A+ François

Non c'est pas vraiment ce qu'il me faut. c'est pas facile d'exprimer sont idée en Français.

Si on inscrit dans la feuille "Parametres" le nom de "Carine" dans A3, la date de debut "01-01-20" dans B3 et la date de fin "10-10-20" dans C3.
Et que l'on clic sur un bouton, je voudrai bien que dans la feuille "année", a la ligne de "Carine" du 01-01-20 au 10-01-20.
On remplace les formules par leur valeur!

Et je voudrai bien le faire sur plusieurs feuille.

Désolé de ne pas arriver a m'exprimer
 

moi_ces_moi

XLDnaute Nouveau
Quand je fais cette manipulation en manuel, je retire la protection de la feuille "année", je sélectionne les cellules du "01/01/20 au 10/01/20" a la ligne de "Carine", je copie, je fais un collage special (coller valeur) et je remet la protection.

Je dois faire cette manipulation sur plusieurs feuille (Absence, année cache,...)
Et c'est pas toujours la meme personne, les dates sont différente a chaque fois.

Voila pourquoi j'ai pensé a cette solution, faire une feuille "parametre" pour insérer les critères et créer un VBA.

Mais ce n'est peut être pas possible.

Merci de votre aide
 

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 116
dernier inscrit
kutobi87