Copier-Coller formules avec condition - VBA Excel

Signaler
Messages postés
44
Date d'inscription
jeudi 8 décembre 2011
Statut
Membre
Dernière intervention
14 mars 2012
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour,

J'ai une plage de cellules dans l'onglet "AAA"
J'ai une formule qui est stocké dans l'onglet "BBB"

Je souhaiterai copier coller la formule de la cellule "BBB" dans "AAA" avec la condition suivante :
- lorsque le contenu de ma colonne K de l'onglet "AAA" est égal à "Sous total".

Je n'arrive pas à adapter mon code par rapport à cette condition.
Voici ce que j'ai écrit pour l'instant mais cela ne fonctionne pas :

..................................................
With Worksheets("AAA")

For i = 1 To 500

'Copie de la formule

Sheets("BBB").Select
Range("N21").Select
Selection.Copy

'Collage des formules

Sheets("AAA").Select
If .Cells(i, 11) = "SOUS-TOTAL" Then

Range("K" & i).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

End If
Next i
End With
End Sub
...................................

Auriez vous une solution?

Merci

3 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
226
Bonjour, talined,
Tu es quand même présent sur ce forum depuis suffisamment longtemps pour savoir que les bouts de code sont à présenter entre balises code !
Tu es par ailleurs depuis suffisamment longtemps sous VBA/Excel pour ne plus agir à coups de select, paste et tutti-quanti ! J'ai moi-même eu plusieurs fois déjà à intervenir dans tes discussions pour te montrer que ces méthodes étaient mauvaises !
Tu ne sembles en tenir aucun compte !
Je veux bien te montrer à nouveau et te corriger ton bout de code, mais j'ai l'impression très nette que cette nouvelle intervention aboutira elle-aussi à une étape copier/coller suivie d'une "jetée" aux oubliettes.
Alors voilà ton à copier/coller ! ===>>
With Worksheets("AAA")
    For i = 1 To 500
     If .Cells(i, 11) = "SOUS-TOTAL" Then
       .Range("K" & i).Formula = Sheets("BBB").Range("N21").Formula
     End If
   Next i
 End With

Analyse-le donc. Compare avec ton code ===>> comprends ===>> et garde ceci à l'esprit : je ne corrigerai dorénavant plus un seul bout de code que tu montrerais écrit sur ces bases de select, copy, paste, activate, etc ... Car ce serait pure peine perdue.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
44
Date d'inscription
jeudi 8 décembre 2011
Statut
Membre
Dernière intervention
14 mars 2012

Merci,

Oui en effet, j'ai utilisé l’enregistreur de macro car je ne savais pas quelle propriété utiliser pour un collage formule.
Je ne connaissais pas la propriété "formula".
Désormais, c'est chose faîte et je t'en remercie.
Je comprend très bien ce code.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
226
Ce n'est pas la non connaissance de la propriété formula, que je te "reproche", talined, mais l'utilisation répétée de sélections au lieu de pointer directement. J'aurais aimé te voir faire cet effort, y compris avec un code erroné.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient