Mode de copier/coller sous conditions
Bonjour à tous,
J'en apprend tous les jours sur les macros mais mes compétences ne me permettent toujours pas de faire des choses simples par moi-même
Je vous explique (CF fichier joint ), j'ai deux petits besoins pour faire de la comparaison de projets :
1 - Je renseigne les données d'un projet dans la colonne H, en étude, une fois que j'ai terminé l'étude, je souhaite pouvoir la déplacer dans étudié (soit à la suite, soit on me demande à quelle position). Pour ce faire, je ne peux pas simplement copier coller toutes les cellules. Certaines ont besoin d'être copié en valeur, pour casser les formules; d'autres ont besoin de reprendre les formules. Pour cela je pensais dédier une colonne, ici la D pour dire de comment la cellule doit se copier.
2 - Ensuite j'aimerais pouvoir faire un RAZ de certaines cellules pour renseigner une nouvelle étude. De la même façon je pourrais avoir une colonne, ici la C pour dire quelles cellules vont voir leur contenu effacer.
3 - Je souhaite pouvoir faire marche arrière et ramener les données d'un projet étudié dans la colonne en étude. Les cellules à ramener sont les mêmes que celles qui sont à RAZ donc on peut se servir de la même colonne comme indicateur. Pour ça je pensais soit avoir un bouton devant chaque projets étudiés que je copie/colle en modifiant la colonne à copier, soit après avoir cliquer sur un bouton, on me demande quel projet je souhaite ramener.
Je précise que j'ai pour l'instant 180 lignes. Si vous avez d'autres idées de structure ou de façon de faire, je suis preneur
Voilà
Ca fait un peu de texte mais au moins ça devrait être clair !
Edit du titre du sujet pour qu'il soit plus facile à retrouver
Bon, j'ai réussi à me faire aider ailleurs
Mais j'arrive pas à modifier les colonnes de la macro
Sub Copie()
Dim C As Range, Col As Integer
'trouve la colonne à utiliser
Col = Cells(3, Columns.Count).End(xlToLeft).Column + 1
For Each C In Range("H3", Cells(Rows.Count, 8).End(xlUp)) 'Sélectionne la plage H3 à la dernière cellule remplie de la colonne H
If C.Offset(, -4) = 0 Then
Cells(C.Row, Col).Value = C.Value 'recopie valeurs
ElseIf C.Offset(, -4) = 1 Then
C.Copy Cells(C.Row, Col) 'collage standard
End If
Next C
End Sub
Sub RAZ()
Dim C As Range
For Each C In Range("H3", Cells(Rows.Count, 8).End(xlUp)) 'Sélectionne la plage H3 à la dernière cellule remplie de la colonne H
If C.Offset(, -5) = 1 Then
C.ClearContents 'efface la cellule
End If
Next C
End Sub
Sub MarcheArriere()
Dim C As Range, Num As Variant, Col As Variant
'Saisie du numéro de projet
Num = InputBox("Entrez le numéro de projet")
If Num = "" Then Exit Sub
Col = Application.Match("Projet " & Num, [2:2], 0)
If Not IsNumeric(Col) Then
MsgBox "Projet " & Num & " non trouvé"
Exit Sub
End If
For Each C In Range("H3", Cells(Rows.Count, 8).End(xlUp)) 'Sélectionne la plage H3 à la dernière cellule remplie de la colonne H
If C.Offset(, -5) = 1 Then
C.Value = Cells(C.Row, Col).Value
End If
Next C