VBA - Compléter un tableau multi dimensionnel

SkinDash

XLDnaute Nouveau
Bonjour à tous :)

Pour illustrer mon problème, je joins 3 documents:

- Comparaison1.xlsm
- Source1.xlsm
- Import1.xlsm


J'essaye de créer une feuille Excel (Comparaison1.xlsm), qui comparerait deux fichiers Excel existants, un template (Source1.xlsm) avec un input (Import1.xlsm)


Dans mon fichier Comparaison1.xlsm, je renseigne les différents liens vers mon template (Source1.xlsm) et mon input (Import1.xlsm).

Ensuite, je souhaiterais faire plusieurs vérifications:

- Vérifier que l'entête de mon fichier input (Import1.xlsm) est bien identique à celle de mon template (Source1.xlsm). (Même nombre de colonnes, colonnes dans le même ordre et avec le même libellé)

- Si une "erreur" est trouvée, exemple: une colonne pas à sa place ou alors avec un mauvais libellé (par exemple "TEST" au lieu de "Test"); indiquer sur la seconde feuille de Comparaison1.xlsm (feuille résultat) cette erreur ou ces erreurs.

Exemple:

Ligne 1: Colonne C "TEST" au lieu de "Test".
Ligne 2: Colonne B à la place de colonne Z.

(J'ai remplacé les libellés des colonnes par 1, 2, 3... et les données par a, b, c...)

Edit: Je pensais faire 3 tests, dans un premier temps vérifier qu'il y a le même nombre de colonnes, si ce n'est pas le cas tout de suite stoper la macro et indiquer sur la feuille résultat "Pas le bon nombre de colonnes"; s'il y a le bon nombre de colonnes, vérifier qu'elles sont bien toutes présentes avec le même libellé, si ce n'est pas le cas indiquer sur la feuille résultat les colonnes de la feuille input qui ne sont pas présentes comme sur le template et stoper la macro; s'il y a le bon nombre de colonnes + toutes les colonnes ont le même format, vérifier qu'elles sont dans le bon ordre, si ce n'est pas le cas indiquer sur la feuille résultat les erreurs d'ordre.


J'ai voulu commencer par enregistrer les données du libellé dans un tableau multi dimensionnels (et je n'y suis pas arrivé) mais ne suis pas certain que ça soit le plus facile/pratique pour ma problématique.

Je suis preneur de tout conseil.

Merci à vous et très bonne soirée,

Skin' :)
 

Pièces jointes

  • Comparaison1.xlsm
    19.7 KB · Affichages: 34
  • Import1.xlsm
    15.6 KB · Affichages: 30
  • Source1.xlsm
    11.4 KB · Affichages: 28
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : VBA - Compléter un tableau multi dimensionnel

Bonjour Skindash le forum
tu veux que l'on compare quoi???, tu as mis deux fichiers qui sont identiques !!!!!
repasses ton fichier avec des données bidons OK mais pas intraitable, là des a sur la ligne 2 et des chiffres dans les entêtes!!!
quelle est la différence entre 1 et 1 ??
refais tes fichiers avec des valeurs et du texte et repasses le tout dans un dossier compressé, et là, on te fera une comparaison.
a+
Papou:)
 

Paritec

XLDnaute Barbatruc
Re : VBA - Compléter un tableau multi dimensionnel

Re Bonjour Skindash le forum
voilà j'ai fait la macro en inversant deux colonnes dans le fichier source1 et import1

et aussi deux valeurs de ligne pour avoir un résultat à afficher
pour plus de facilité, tu dois avoir les trois fichiers dans le même dossier au moins pour le test.
mais là j'ai comparé l'intégralité du tableau je ne sais pas si c'est ce que tu veux
1) tu décompresses le dossier sur ton bureau
2) tu ouvres le dossier et tu ouvres skindash V1 et tu cliques comparer et tu me redis

a+
Papou
:)
 

Pièces jointes

  • Skindash V2.zip
    47.1 KB · Affichages: 30
Dernière édition:

SkinDash

XLDnaute Nouveau
Re : VBA - Compléter un tableau multi dimensionnel

Bonjour Papou,

Merci pour la réponse rapide, c'est super !

Je viens de tester, tout fonctionne très bien dans ton Zip.

Deux petites remarques cependant:

- quand le nombre de colonnes n'est pas le même, la macro le signale bien mais j'ai ensuite un message d'erreur

"Erreur d'exécution 9: l'indice n’appartient pas à la sélection" sur la ligne "If aa(i, a) <> bb(i, a) Then" ; au lieu de simplement quitter la macro.

- Est-ce que cela peut venir du fait que j'ai supprimé la ligne:

" 'If UBound(aa) <> UBound(bb) Then MsgBox "le nombre de ligne est différent dans Source " & UBound(aa) & " lignes " & vbCrLf _
& " dans Import " & UBound(bb) & " lignes !!", , "Nombre de lignes Différent""

car je n'ai pas besoin de comparer le nombre de lignes du fichier, uniquement qu'il y a le même nombre de colonnes, avec les mêmes libellés et dans le même ordre.


Merci à toi pour ton temps, vraiment appréciable d'avoir toujours des réponses de qualités et rapidement sur ce forum :)

Bonne journée

Skin'
 

Paritec

XLDnaute Barbatruc
Re : VBA - Compléter un tableau multi dimensionnel

Re Skindash le forum
bon alors que cela plante c'est normal, après je comparais toutes les cellules des deux tableaux
alors maintenant si tu me définis comme il faut ton besoin on recommence
tu veux seulement comparer les entêtes de colonnes c'est cela ??? et en tirer les différences??
et aussi sortir de la macro si le nombre de colonne est différent??
merci de me confirmer par retour et je modifierai
pour le nombre de lignes, je vais supprimer
a+
Papou:)
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG