Remplir toute les cellules d'un tableau excel [Résolu]

cs_manlaurent 22 Messages postés mercredi 19 septembre 2012Date d'inscription 29 mars 2016 Dernière intervention - 10 févr. 2014 à 21:51 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention
- 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
Afficher la suite 

Votre réponse

6 réponses

ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 11/02/2014 à 08:28
0
Merci
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
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 12/02/2014 à 11:03
0
Merci
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
Commenter la réponse de ucfoutu
cs_manlaurent 22 Messages postés mercredi 19 septembre 2012Date d'inscription 29 mars 2016 Dernière intervention - 12 févr. 2014 à 19:09
0
Merci
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
Commenter la réponse de cs_manlaurent
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 12/02/2014 à 19:29
0
Merci
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
Commenter la réponse de ucfoutu
cs_manlaurent 22 Messages postés mercredi 19 septembre 2012Date d'inscription 29 mars 2016 Dernière intervention - 19 févr. 2014 à 19:47
0
Merci
Bonsoir ucfoutu,

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

Merci encore
Commenter la réponse de cs_manlaurent
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 19 févr. 2014 à 19:58
0
Merci
Bien.
Libère alors s'il te plait ce sujet (un clic sur le tag "RESOLU" au niveau de ton tout premier message)
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.