Remplir toute les cellules d'un tableau excel

Résolu
cs_manlaurent Messages postés 22 Date d'inscription mercredi 19 septembre 2012 Statut Membre Dernière intervention 29 mars 2016 - 10 févr. 2014 à 21:51
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 19 févr. 2014 à 19:58
Bonjour,
je suis sous visual studio 2010, et je commande une feuille excel (2010). je voudrais vérifier et remplir si il y a besoin toute les cellules vide de la dernière rangée de ma feuille excel, par "ok" par exemple.
j'ai pas trouvé sur le net, des exemples qui fonctionnent. Ou je remplie toute la feuille, ou partiellement.
Voici mon code:

Dim oExcel As Excel.Application

oExcel = CreateObject("Excel.Application")
oExcel.Visible = False
oWk = oExcel.Workbooks.Open("C:\charge\chargeEssai.xlsx")



For Each cellule As Excel.Range In oWk.Sheets(1).range("A1048576:H1048576").End(Excel.XlDirection.xlUp).Offset(1, 0).Rows.cells
If cellule.Value = Nothing Then


cellule.Value = "ok"

merci

6 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
Modifié par ucfoutu le 11/02/2014 à 08:28
Bonjour,
tu ne pourras le faire en "pilotage" de Excel QUE si tu sais le faire directement depuis Excel.
Si tel n'est pas le cas, c'est dans la section VBA de ce forum, qu'il te faut ouvrir une discussion hors "pilotage" -sans parler de tes objets oExcel, oWK, etc ... créés dans VB.Net pour "piloter" VBA.Excel.
J'observe d'ailleurs que ta principale difficulté est la connaissance de Excel, qui ne nécessite l'utilisation ni d'une boucle ni d'expression conditionnelle pour faire ce que tu veux faire. J'observe également que tu définis en dur le rang de la dernière ligne possible, alors qu'il varie d'une version à l'autre et que VBA.Excel n'a aucune difficulté à le déterminer sans faille.
Je n'aime pas trop traiter du VBA dans une section du forum autre que VBA.
Mais bon ...
Voici ce que tu aurais à écrire si tu étais dans Excel (et non en pilotage).
On Error Resume Next
Worksheets(".......").Range("A" & Rows.Count & ":H" & Rows.Count).SpecialCells(xlCellTypeBlanks).Value = "ok"
On Error GoTo 0


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 12/02/2014 à 11:03
L'exemple que je t'ai donné "complète" la toute dernière ligne possible d'une feuille, puisque tu as écrit :
"la dernière rangée de ma feuille excel"
Si, par contre, tu voulais dire autre chose que la dernière rangée de ta feuille, il va falloir que tu donnes d'autres précisions qui permettent d'en déterminer le rang exact :
- à quoi la reconnais-tu ? rien en une colonne bien spécifiée, par exemple ? et ;
---si oui, laquelle ?
---si non : ce ne sera certes pas range("A1048576:H1048576").End(Excel.XlDirection.xlUp)
qui pourrait te retourner à coup certain la dernière ligne contenant des données, mais non entièrement remplie !
Et cela également nécessite du VBA/Excel avant de penser à ton pilotage.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
cs_manlaurent Messages postés 22 Date d'inscription mercredi 19 septembre 2012 Statut Membre Dernière intervention 29 mars 2016
12 févr. 2014 à 19:09
bonsoir,

merci pour votre réponse, en faite j'ai un programme conçue avec visual studio 2010. l'utilisateur qui utilise ce programme renseigne plusieurs texbox et combox 8 au total exactement, d'où je récupéré les infos et les transfert sur une feuille excel (2010). Sur la feuille excel , j'ai 8 colonnes de "A" jusqu'à "H". Maintenant mon problème est qui peux y avoir des cellules vide, et moi j'aimerai contrôler avant le des transfert de données, que toute les cellule de la dernière rangeé ( A jusqu'à H) vide soit rempli par un "Ok" par exemple.

merci pour votre aide

Salutations
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 12/02/2014 à 19:29
1) Nous allons, si tu le veux bien, totalement oublier le pilotage depuis VB.net et nous consacrer uniquement à l'aspect VBA/Excel (puisque telle EST ta difficulté). Une fois résolue cette difficulté, la question des instructions à donner en pilotage n'est rien d'autre que des manipulations à faire sur les objets Excel créés dans ton appli VB.Net ! (le pilotage n'est rien d'autre que cela)
2) tu n'as pas répondu clairement à l'une de mes questions. Or, ta réponse conditionne de manière très significative la solution à rechercher ! Y a-t-il au moins une colonne de cette dernière ligne qui ne peut être vide (qui est forcément renseignée, donc) ?.

Tu pourrais par exemple forcer la saisie d'une des textboxes (facile, non) avant ton pilotage. La cellule de la colonne correspondante serait alors FORCEMENT non vide et permettrait à coup certain d'identifier le N° de cette dernière ligne

Tu pourrais également très astucieusement ne lancer ta proc de pilotage que si tes 8 contrôles ont été saisis (une simple routine de vérification sine qua non). Et si tu tolères des "manques", rien ne t'empêche de les transformer en ton "ok" avant même de passer ces valeurs à Excel ! Il n'y aurait alors aucun besoin d'agir à nouveau sur cette fameuse dernière ligne !



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_manlaurent Messages postés 22 Date d'inscription mercredi 19 septembre 2012 Statut Membre Dernière intervention 29 mars 2016
19 févr. 2014 à 19:47
Bonsoir ucfoutu,

j'ai fais comme tu mas dit, et j'ai pu résoudre mon problème.

Merci encore
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 févr. 2014 à 19:58
Bien.
Libère alors s'il te plait ce sujet (un clic sur le tag "RESOLU" au niveau de ton tout premier message)
0
Rejoignez-nous