[HELP] trouver derniere colonne non vide + comptage
richornet
Messages postés2Date d'inscriptionvendredi 1 décembre 2000StatutMembreDernière intervention24 janvier 2008
-
24 janv. 2008 à 18:57
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
25 janv. 2008 à 17:39
bonsoir à tous, alors voilà j'ai un gros probleme, je suis en projet, dans lequel je doit importer un fichier texte sur une feuille excel.
Sur la feuillle1 j'ai un bouton qui me permet d'importater mon fichier, ça c'est bon. J'ai le code suivant:
Sub Import(fichier As String)
Dim wbk As Workbook, wbkTxt As Workbook, strchem
Le chemin du fichier a ouvrir est fourni en parametre, les données du fichier sont séparé par des points virgule, donc elles sont correctement classé.
Dans un second temps j'aimerai trouver comment reperer la derniere colonne remlie pour pouvoir ajuster la taille des colonnes comme il faut ((vous savez quand on double clic sur le bord d'un colonne)->EntireColumn.AutoFit), seulement je n'arrive pas a automatiser le systeme...
j'aimerai ensuite trouver une colonne contenant une certaine valeur ("VirusScanVersion")
Et ensuite compter les valeurs differentes sur chaques lignes de cette colonne. Je ne connais pas a l'avance le nombre de valeurs differentes dans cette colonne :s
exemple de valeurs pouvant etre dans la colonne
C | D | E
|T005.VirusScanVersion |
| 7.1.0.187 |
| 4.5.1.1306 |
| 7.1.0.187 |
| 7.1.0.187 |
| 7.1.0.187 |
| 7.1.0.187 |
| 7.1.0.187 |
| 4.5.1.1306 |
| 7.1.0.187 |
| 7.1.0.187 |
Si vous pouviez m'aidez, ça serais Achement sympa :)
merci beaucoup
PS: est-il possible d'importé le fichier sur la meme feuille d'ou on importe le fichier texte, sans supprimer le bouton qui lance l'importation.
A voir également:
[HELP] trouver derniere colonne non vide + comptage
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 24 janv. 2008 à 23:39
Bienvenue à bord.
Pour trouver la denière colonne, tu as différentes options
nbColonnes = Cells(1, Columns.Count).End(xlToLeft).Column
Le 1 spécifie la 1ere ligne, donc à toi de remplacer le 1 par la colonne qui contient le plus de données, si c'est le cas.
ou bien
nbColonnes = Cells.Find("*", Range("A1"), , , xlByColumns, xlPrevious).Column
Ici, la formule va retourner la dernière colonne utilisée, peu importe sur quelle ligne.
Pour trouver une valeur, utilise la fonction FIND
Cells.Find(MaValeur)
Voilà pour un début.
PS: voir les règlements du site ...
Comme tu en es à ta première visite, ce serait bien (venue...)
Évite de poser plusieurs questions différentes dans le même message. L'idée de poser des questions c'est d'y trouver une réponse, mais c'est aussi le cas des autres personnes qui parcourent ce site et qui essayent d'y trouver leur bonheur en faisant des recherches... donc un titre clair comme c'est le cas ici et une seule question... Quand une réponse te satisfait pleinement, clique le bouton "Accepter..." sur sa réponse pour indiquer aux autres qu'ils peuvent y trouver quelque chose d'intéressant.
Bon voilà... et re-bienvenue !
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 24 janv. 2008 à 23:44
Salut,
pour ton premier probleme vois la ligne bleu ci-dessous:
Sub Import(fichier As String)
Dim wbk As Workbook, wbkTxt As Workbook, strchem
Set wbk = ActiveWorkbook
strchem = fichier
Workbooks.OpenText Filename:= _
strchem, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1)), TrailingMinusNumbers:=True
Cells.Columns.AutoFit
ActiveSheet.Select 'ne sert a rien donc a enlever
ActiveSheet.Move after:=wbk.Sheets(1)
End Sub
Option Explicit
Dim MaPlage as Range
Sub RechercheColonne ()
Dim DerniereValeur As long ,MaValeur as String, Celule As Range, DansCelule as String, QuelColonne as long
MaValeur = "VirusScanVersion"
DerniereValeur = Range("1:1").Find("*", , , , xlByColumns, xlPrevious).Column 'renvoi le numero de la colonne qui contient la derniere valeur sur la 1ere ligne
Set MaPlage = range("A1",Cells(1,DerniereValeur))
For Each Celule in MaPlage
DansCelule = Right(LCase(Celule.value), Len(MaValeur))
If DansCelule = LCase(MaValeur) then
QuelColonne = Celule.Column
Exit For
End If
Next
if QuelColonne > 0 Then MsgBox "MaValeur ce trouve en colonne : " & QuelColonne
End Sub
Voila pour la premiere partie. Pour la suite peux-tu preciser ce que tu veux et ce que tu veux en faire.
A+
P.S je n'ai pas testé ce code je l'ai ecrit directement ici donc il peut y avoir quelque pb en particulier au niveau de la syntaxe
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 24 janv. 2008 à 23:50
...
Apres lecture de la reponse de MPi² je ne peut etre que d'accord avec lui concernant le reglement
Donc pour la suite, poste une nouvelle question et j'y repondrais volontier
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?