Recherche de champs libres dans un table

Fermé
Barthe - Modifié par Barthe le 21/07/2014 à 17:56
 Barthe - 23 juil. 2014 à 17:07
Bonjour à tous,

Je suis en train de coder une macro VBA qui me permet d'actualiser une base de données.
Pour ce faire, je dispose d'une feuille excel "Feuil1". Je crée un table monodimensionnel (appelé table, attention il ne s'agit pas d'un tableau excel qui apparait à l'écran mais bien d'un table contenant tout plein de variables) dans lequel je copie l'ensemble des données de la Feuil1 afin de diminuer par la suite le temps de calcul.

Mon but ici est de déterminer les champs vides de caractères de mon table.

Je voudrais rédiger un code du type :

Sub test()

For i = 0 to derniereLigneDuTable
'If table(i,0) est vide then
'procedure...
Else
'procedure...
End If
Next i

End Sub

Ce qui m'intéresse, c'est comment écrire en VBA la condition "If table(i,0) est vide". Car je n'arrive pas actuellement à utiliser les fonctions LIKE "*" ou IsEmpty avec un champ d'un tableau (apparemment, cela ne marche qu'avec des chaines de caractères ou des range).

Merci à ceux qui pourront m'aider à résoudre ce problème. J'ai ici simplifié la situation d'usage mais dans mon code, je vais appliquer tout cela à de nombreux tableaux dont le nombre de lignes est inconnu à l'origine et varie à chaque fois !

A voir également:

5 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 21/07/2014 à 18:23
bonjour

pourrais tu montrer le code de construction de "table" ?

D'avance merci

Michel
0
Voila le code en question (explication en dessous du code) :

'procedure which copies the sheet in a tab, called table, so as to reduce the time of calcul
Sub creationtable()

Dim j As Integer
Dim i As Integer

ReDim table(number_of_line - 2, number_of_column - 1)
For j = 0 To number_of_column - 1
For i = 0 To number_of_line - 2
table(i, j) = cells(i + 2, j + 1)
Next i
Next j

End Sub

number_of_line : nombre de line de table (calculé auparavant)
number_of_column : nombre de colonne de table (calculé auparavant)
table a été créé dynamiquement en début de module
0
Il semblerait que If table(i,0) = "" fonctionne ! Merci tout de même :)
0
Si je peux me permettre de continuer sur ma lancée :)

Je souhaiterais maintenant trier un tableau. Attention, il ne s'agit pas d'un tableau excel présent visuellement à l'écran mais d'un table (public table() ).

J'ai donc un table bidimensionnel. Je souhaiterais trier plusieurs colonnes spécifiques tel que suivant (en priorité le 1er point, puis le 2nd puis le 3ème) :
-d'abord la seconde colonne par ordre alphabétique (les aaa en haut, les zzz en bas)
-ensuite la 56ème colonne (ce n'est pas une blague ^^) qui n'est composé que de 0, de 1 et de 2 (les 0 en haut, les 1 aux milieux, les 2 en bas)
-enfin la cinquième colonne de nouveau par ordre alphabétique (les aaa en haut, les zzz en bas)

Je remercie infiniment les personnes qui m'aideront à faire ce tri. Ce sera la fin d'une longue programmation qui m'aura permis de découvrir le code VBA, avec plaisir je dois le dire :)
0

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

Posez votre question
Finalement, je me suis débrouillé autrement. Je cherchais une méthode similaire à Sort mais qui marche avec un table, finalement j'ai utilisé sort en contournant le problème du table !

Merci à tous pour votre aide :)
0