Re : effacer cellule de la feuille 2 sans l'ouvrire
Bonjour;
Mais bien sûr!
VB:
Sheets("feuille2").Range("A1").ClearContents
Ça peut aussi s'écrire:
VB:
Feuil2.[A1].ClearContents
si Feuil2 est le CodeName de "Feuille2"
N'est ce pas, si l'enregistreur de macros traduit tout par des Select, c'est par fidélité aux commande effectuées depuis l'interface utilisateur, lesquelles ne peuvent s'effectuer que par l'intermédiaire de sélections. Il faut toujours tout contracter et éliminer ces sélections inutiles. Il vaut même mieux même affecter par un Set, parfois, un objet à une variable de son type (Worbook, Worksheet ou Range) pour éviter des répétitions, plutôt que de le sélectionner et travailler avec Selection qui est une expression objet banalisée et oblige à plein de liaisons tardives.
Cordialement.
J'ai un autre problème aussi sur lequel je chercher une solution depuis un moment sans avoir trouver ...
j'ai un code vba qui me permet de faire des calculs en auto puis des copier/coller et ensuite je veut faire un tri par date et imprimer mon document.
Cependant mon tri par date ne fonctionne pas lorsqu'il y a plusieurs mois dans la liste, exemple (résultat après tri) :
Re : effacer cellule de la feuille 2 sans l'ouvrire
Ça ne peut plus se régler sans joindre un fichier qui montre le problème, qu'on voie à quel niveau il faut intervenir (en amont si possible plutôt qu'à postériori sur la liste mal constituée).
Apparemment votre liste contient des chaînes de caractères et non des dates.
À +
Re : effacer cellule de la feuille 2 sans l'ouvrire
Bonjour llambry, Dranreb,
Je pense que ton probleme vient que les dates style : JJ.MM.AAAA ne sont pas reconnu comme des dates mais comme du texte, il faudrait peut etre remplacer tous les "." par des "/" avant de faire le tri.
par exemple avec la fonction Replace(montexte,".","/").
Re : effacer cellule de la feuille 2 sans l'ouvrire
Je viens de mettre un code pour remplacer les . par / mais lorsque je remplace une date 03.02.2012 --> 02/03/2012 ????
Voilà mon code :
'modifie le format de la date
Dim i As Long, derlign As Long
derlign = Range("j65000").End(xlUp).Row 'donne la dernière ligne non vide en colonne J
For i = 1 To derlign
Cells(i, 10) = Replace(Cells(i, 10).Value, ".", "/")
Next i
Re : effacer cellule de la feuille 2 sans l'ouvrire
alors utilise au lieu de la foncytion replace une fonction de reconstruction de date :
DateSerial(Right(Range("A1"), 4), Mid(Range("A1"), 4, 2), Left(Range("A1"), 2))
Right(Range("A1"), 4) => pour l'année
Mid(Range("A1"), 4, 2)=> pour le mois
et Left(Range("A1"), 2))=> pour le jour
soit la fonction Dateserial(Annee,mois,jour).
Re : effacer cellule de la feuille 2 sans l'ouvrire
je suis assez novice en vba...
j'ai essayé de mettre ton code dans mon vba mais aucun succes...
pourait tu me donner un peu plus d'info (avec cells (i,10) )
Re : effacer cellule de la feuille 2 sans l'ouvrire
Alors Cells(i,10) cells correspond a une cellule alors que range lui fait référence a une plage de cellules ( qui peut ne contenir qu'une cellule), ensuite le i représente le numéro de ligne, et 10 le numero de colonne( A=1,B=2,C=3...)
donc avec ton code cela devrais donne ceci :
VB:
Dim i As Long, derlign As Long
derlign = Range("j65000").End(xlUp).Row 'donne la dernière ligne non vide en colonne J
For i = 1 To derlign
Cells(i, 10) = DateSerial(Right(Cells(i, 10), 4), Mid(Cells(i, 10), 4, 2), Left(Cells(i, 10), 2))
Next i
edit : pour ce qui est des fonctions Right,Mid et left les explications sont ici
Re : effacer cellule de la feuille 2 sans l'ouvrire
Bonsoir nyko283,
Je viens de mettre ton code et j'ai eu quelque petit soucis mais maintenant ça marche. En faite j'ai du modifier un peu le code car lorsqu'une cellule est vide le code plantait...