Copier-Coller formules avec condition - VBA Excel

talined Messages postés 44 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 14 mars 2012 - 14 mars 2012 à 16:04
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 14 mars 2012 à 19:17
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

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 mars 2012 à 16:53
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
1
talined Messages postés 44 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 14 mars 2012
14 mars 2012 à 19:14
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 mars 2012 à 19:17
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
0
Rejoignez-nous