Sélection des cellules non vides "visuellement"
Bonjour à tous,
Suite à mon sujet sur la copie de données dans NotePad (résolu grâce à m3ellem1 ici https://forum.excel-pratique.com/viewtopic.php?p=819319#p819319), je me retrouve avec un souci.
Les données de la colonne S se copient dans le bloc notes comme voulu. Sauf que ces données sont uniques, c'est-à-dire qu'une fois copiées et envoyées dans mon ERP, elles ne peuvent plus l'être pour ne pas créer de doublons.
De ce fait, je me suis dit qu'il suffisait d'effacer les cellules après la copie.
Sauf que du coup, les prochaines lignes ne comprennent plus la formule qui me permet de récupérer les données à copier.
Je me suis dit, pas grave, je n'ai qu'à tirer la formule plus loin, même sur des lignes pas encore remplies, comme ça, quand mes données copiées sont effacées, j'ai encore la formule en dessous. Sauf que non : le code fourni par mon sauveur sélectionne la colonne jusqu'à la première cellule non vide. Or, même en ayant une formule du style =SI(R7="";"") en S7, S7 APPARAÎT vide, mais ne l'est pas vraiment. (n'ayez crainte, je vous joins un exemple)
Je cherche depuis hier dans les méandres du net, mais pas moyen de trouver une solution.
Alors si quelqu'un peut me sauver de la corde...
Merci d'avance !
Bonjour,
Si j'ai bien compris:
on sélectionne la plage S3:Sdernière ligne occupée pour la copier quelque part puis on veut effacer cette plage sans effacer les formules en fin de plage (qui n'affichent pas de données)
Est ce qu'il serait absurde de définir la fin de plage non pas sur la dernière ligne occupée de la colonne S, mais sur la dernière ligne occupée de la colonne R ?
Avantages:
quand on copie la plage on ne copie que des données sans zone vide
quand on efface la plage les cellules avec formules n'affichant rien ne sont pas touchées.
Set rngData = Sheets("PROD").Range("S3:S" & Sheets("PROD").Range("R" & Rows.Count).End(xlUp).Row)
'rngData.Address donne la plage S3:S6
rngData.Copy ' seule la plage S3:S6 sera copiée
.../...
rngData.ClearContents ' seule la plage S3:S6 sera effacée.../...
A+
Bonsoir,
Tout d'abord, merci pour ta réponse.
Alors je n'ai pas mon tableau sous les yeux, mais ton hypothèse semble intéressante
Je teste ça demain et reviens vers toi pour te confirmer ou infirmer ma faisabilité du truc.
Sinon j'avais trouvé une méthode pour contourner ça : avant la copie de la plage S contenant les données qui m'intéressent, je crée un filtre et enlève les cases vides, pour ne sélectionner que ce dont j'ai besoin
Problème, la première cellule (par exemple S3) de la plage à copier, et là où se situe le filtre, peut être elle vide, or dans ce cas cela ne va pas, il faut que la première cellule ait un résultat...
Bref, je teste ta méthode demain
Merci encore pour ta réponse !
Bonjour AlgoPlus,
Bon et bien c'est (presque) parfait, j'ai testé, ça me convient tout à fait ! C'est ce dont j'avais besoin !
Alors pour abuser un tout p'tit peu, j'ai mis "presque" car si la première cellule de la plage est "blanche" (vide mais avec une fonction qui ne renvoie rien), elle est quand même prise en compte dans mon filtrage (voir plage_avec_vide)
Dans l'idéal, il faudrait que dans ce cas, le filtre, et donc la sélection, commence sur la première cellule qui elle renvoie un résultat (voir plage_souhaitee)
J'essaie tant bien que mal avec des xlup et xldown, mais j'arrive pas à avoir ce que je veux.
Mais sinon, un grand merci, mon tableau est finalisé, je n'ai plus qu'à remettre ça en forme !