VBA Pastevaleur qui change la valeur des cell

Fermé
GE - 8 juin 2011 à 10:10
 GE - 8 juin 2011 à 14:20
Bonjour,

Je fais face à un problème qui me rends trés curieux : J'ai une macro qui ouvre un fichier de plusieurs onglets , va prelever des informations dans plusieurs autres fichiers pour chaque onglets et ensuite sauve et ferme le fichier.

Juste avant de le fermer : elle mets un information en haut de chaque page :
C2=CONCATENER(EQUIV(B2;$A:$A;0)-10;" / ";NBVAL($A:$A)-4)

En vba cela donne :
Range("C1").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(MATCH(RC[-1],C1,0)-10,"" / "",COUNTA(C1)-4)"

Pour chaque onglet du classeur, cette formule calcule le rang de la valeur en B2 dans la liste qu'elle vient d'importer sur l'onglet en question. Cela donne par exemple : 312/333.

La macro fonctionne trés bien et la formule aussi , mais recemment j'ai ajouté un Paste special valeur juste aprésla formule et là ... le paste special me change sur certains feuille les valeurs des cellules. Il me transforme un 312/333 en 49/333.
Le code : Range("C1:C6").Select 'Il y a d'autre formule de C1 a C6
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Et la je vois pas du tout pourquoi ?
Une idée ?

Merci d'avance,
G
A voir également:

1 réponse

melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
8 juin 2011 à 11:54
Bonjour,

j'en ai peut être une.

Lorsque tu ouvres excel, tes classeurs sont en calcul automatique ou sur ordre??

Pour le savoir, outils, options, général, regarde si c'est coché.
Calcul automatique = dès que tu fais une modification : l calcul se fait
Calcul sur ordre = ne se fait que dans des cas particuliers.

Pour savoir si c'est ca mets avant le code :
Range("C1:C6").Select 'Il y a d'autre formule de C1 a C6
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

ca :
calculate


ce qui donne :

calculate
Range("C1:C6").Select 'Il y a d'autre formule de C1 a C6
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

et vois ce qu'il se passe. Si c'est pas ca, c au dela de mes compétences.
0
Bonjour Melanie,

Merci de m'avoir répondu. Malheureusement ta solution n'a pas marché.

J'ai trouvé une solution intermédiare mais qui ne me satisfait pas trop.
A la toute fin de ma macro, je recré une boucle qui passe sur toute les pages et qui fait un pastespecial de toute la page..

Dans l'attente d'un "tilt" , je vais laisser comme ça.

Merci pour ton aide .
Bonne journée.
0