Pouvez vous svp m'aider je n'arrive pas à trouver la bonne formule, pour un tableau.
Je joint le tableau avec des commentaire pour vous expliquez en détail.
Merci par avance pour votre aide.
J'ai mis en commentaire qu'il pouvait y avoir 2 croix car dans le dossier original il n'y a pas de formule de calcul donc si par mégarde nous mettons 2 croix le le petit signe en i4 ce met pour signaler l'erreur.
Soan peux tu me dire stp s'il existe un code vba concernant la copie des croix dans un tableau sans copier les formule de calcul. Exemple dans le fichier joint.
Dans l'attente de ton retour. Merci
hier soir j'étais pas disponible, et j'ai vu ton post #21 que ce matin ; ton fichier en retour.
la cellule active est S19 ; fais Ctrl e ➯ travail effectué ! la cellule active est toujours S19.
ta sub rangecopy() était dans le module de "Feuil1" alors que ce n'est pas une sub événementielle ; elle aurait donc dû être placée dans un module standard tel que Module1 ; j'ai supprimé ta sub rangecopy(), puis j'ai mis dans Module1 ma sub CpyCroix() :
VB:
Sub CpyCroix()
Dim cel As Range: Set cel = ActiveCell
Application.ScreenUpdating = 0
[D14:I17].Copy: [D1].PasteSpecial -4163
Application.CutCopyMode = 0: cel.Select
End Sub
ta sub ne pouvait pas marcher pour ce que tu veux faire, car une copie telle que tu l'avais faite copie tout : les formules, les valeurs, les formats, etc... il faut donc faire une copie en valeurs ; dans mon code VBA, -4163 = xlPasteValues ; ta sub rangecopy() faisait 4 copies successives alors que c'est inutile : on peut faire le job en une seule copie, de toute la plage D14:I17 en D1; c'est-à-dire à partir de D1, car ici, il faut voir D1 comme étant le coin supérieur gauche de la plage recopiée (qui sera de la même taille en nombre de lignes et colonnes que la plage d'origine).
cette seule instruction suffit pour faire la copie :
[D14:I17].Copy: [D1].PasteSpecial -4163
mais tout c'que j'ai mis en plus est utile :
* sans tout c'qui concerne la variable cel, suite à la copie, la plage de destination D1:I4 est sélectionnée ; si ça ne te gêne pas, ou si c'est ce que tu as envie, alors tu peux utiliser cette sub :
VB:
Sub CpyCroix()
Application.ScreenUpdating = 0
[D14:I17].Copy: [D1].PasteSpecial -4163
Application.CutCopyMode = 0
End Sub
* Application.ScreenUpdating = 0 : désactive la mise à jour de l'écran ➯ exécution plus rapide
* Application.CutCopyMode = 0 : désactive le mode du couper / copier ➯ ça évite le cadre de tirets mobiles qui est autour de la plage d'origine ; donc sans cette instruction, tu verras le cadre de tirets sur le contour de la plage D14:I17.
Bonsoir Soan,
Merci pour ta réponse, ça fonctionne, mais juste une petite chose pourquoi il me met un ' dans les cases vide cela me gêne dans le tableau même si les ' sont invisibles il me compte comme une croix. Aurait tu une solution stp. Je te remercie de nouveau
Sub CpyCroix()
Dim cel As Range: Set cel = ActiveCell
Application.ScreenUpdating = 0
[D1:I4].ClearContents 'efface anciens "x"
[D14:I17].Copy: [D1].PasteSpecial -4163
Application.CutCopyMode = 0: cel.Select
End Sub
seul changement : j'ai ajouté [D1:I4].ClearContents 'efface anciens "x" : ça efface les anciens résultats qui ont été mis par une utilisation précédente de cette macro ; mais ce n'est pas cet ajout qui a réglé le problème des apostrophes « ' » ; en voici la preuve : sur "Feuil1", fais Ctrl e ; ensuite, tu peux vérifier que chaque cellule de E1:H4 contient une apostrophe, soit seule « ' », soit devant un "x" : « 'x » ; je ne sais pas ce que tu as fait pour que ce soit comme ça ; je n'ai jamais ce genre de chose ! peut-être que c'est dû à un import de données d'un fichier ? ou à cause d'une conversion d'un fichier LibreOffice en un fichier Excel ? le seul moyen que j'ai trouvé pour résoudre ce problème a été de recréer la feuille !
va sur "Feuil2" ; j'ai fait un copier / coller manuel du tableau droit Q13:S16(tout, y compris les formats) ; puis j'ai recréé le tableau de D14:I14(sans aucune formule, uniquement les bordures, l'alignement centré, et la couleur rouge) ; j'ai alors fait un copier / coller manuel de ce tableau en D1(tout, y compris les formats) ; j'ai retapé la formule de E14(recopiée à droite, puis adaptée selon les bornes d'intervalles de notes) ; j'ai sélectionné E14:H14, puis j'ai étiré vers le bas jusqu'en ligne 17 ; enfin, j'ai copié manuellement la formule de i14(étirée jusqu'en i17) ; maint'nant qu'tu sais comment j'ai recréé la feuille, sur cette même "Feuil2", fais Ctrl e ; ensuite, tu peux vérifier qu'il n'y a plus d'apostrophe dans les résultats : y'a aucun caractère « ' ». (enfin ! )
si y'a un moyen plus simple d'y arriver, sans devoir recréer la feuille, je ne le connais pas ; peut-être qu'un autre intervenant aura une meilleure idée là-dessus ? (moi, j'ai rien d'autre à proposer ! )