Mode de copier/coller sous conditions

Anthonymctm

XLDnaute Occasionnel
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 :confused:

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à :D

Ca fait un peu de texte mais au moins ça devrait être clair !
 

Pièces jointes

  • Macro copie.xlsx
    11.5 KB · Affichages: 7
Dernière édition:

Anthonymctm

XLDnaute Occasionnel
J'ai réussi à me faire aider ailleurs, et on envoyé ce code :
VB:
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
End Sub

Lequel fonctionne très bien sur mon fichier test, mais quand j'essaie de l'adapter, je n'y arrive pas. :mad:

Si quelqun saurait me dire comment modifier les colonnes de référence. Merci !:)
 

Pièces jointes

  • Macro copie2.xlsm
    22.8 KB · Affichages: 2

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof