Modif collage VBA

Anthonymctm

XLDnaute Occasionnel
Bonjour le forum ! :)

Je solicite votre aide pour rectifier un détail sur ma macro.
La macro n'est pas de moi mais j'ai remarqué un petit problème.

Le but c'est de faire un retour du contenu d'une colonne variant de K à AA à la position H

Le code est le suivant :
VB:
Sub Retour_en_etude()
Dim C As Range, Num As Variant, Col As Variant
Num = InputBox("Entrez le numéro de projet") 'Saisie du 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, "H").End(xlUp)) 'Sélectionne la plage H3 à la dernière cellule remplie de la colonne H
If C.Offset(, -4) = 1 Then '"-4" est le décalage vers la gauche entre les colonnes H et D
C.Value = Cells(C.Row, Col).Formula
End If
Next C
End Sub

Le problème c'est qu'il copie précisément le contenu de la formule donc le décalage ne prend pas.
Si je fais un retour en étude de la colonne K à la colonne H, les formules qui prenaient K garde K alors qu'elle devrait passer sur H comme les autres macros.

J'ai essayé de remplacer C.Value = Cells(C.Row, Col).Formula

par C.Copy
Cells(C.Row, Col).PasteSpecial xlPasteFormulas

Qui est utilisé dans les autres macros mais ça ne fonctionne pas.

Un idée ? :')
 
Dernière édition:

Anthonymctm

XLDnaute Occasionnel
Par exemple, en K33 j'ai la formule =3000*(K24-1)

Quand j'active la macro et que je sélectionne la colonne K a reprendre, normalement toutes les lignes oû D=1 ça doit copier la formule (mais en gardant le déplacement actif) donc en H33 je devrait avoir =3000*(H24-1)

Alors qu'actuellement en H33 j'ai =3000*(K24-1) : la formule a été copié a l'identique

Je sais pas si c'est plus clair ^^'

Sinon je peux te faire un fichier exemple mais ça sera un peu long :S
 

Anthonymctm

XLDnaute Occasionnel
J'ai modifié comme ceci
VB:
Sub Retour_en_etude()
  Dim C As Range, Num As Variant, Col As Variant
    Num = InputBox("Entrez le numéro de projet") 'Saisie du 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, "H").End(xlUp)) 'Sélectionne la plage H3 à la dernière cellule remplie de la colonne H
    If C.Offset(, -4) = 1 Then               '"-4" est le décalage vers la gauche entre les colonnes H et D
'C.Value = Cells(C.Row, Col).Formula
C.FormulaR1C1 = Cells(C.Row, Col).FormulaR1C1
    End If
  Next C
End Sub

Mais ça me fait le même résultat : formule copiée à la lettre et pas déplacée :confused:
 

Anthonymctm

XLDnaute Occasionnel
><' ....

J'avais fait la modif dans le module d'un autre fichier identique.. donc quand je testais c'était sans les modif. J'ai honte.

Merci ! et désoler du dérangement sur la fin ^^'

C'est quoi sinon le principe qu'il y a derrière ce R1C1 ?
 

job75

XLDnaute Barbatruc
En VBA le style R1C1 (Row en anglais) c'est la même chose que sur Excel le style L1C1 (Ligne en français).

Dans les feuilles de calcul on utilise en général le style A1 pour les formules.

Menu FICHIER => Options => Formules => cocher/décocher la case "Style de référence L1C1" pour changer de style.
 

Discussions similaires

Réponses
1
Affichages
164

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin