Lire un Tableau Excel 2010 en VBA

solgti

XLDnaute Junior
Bonjour, j'ai quand même fait pas mal de recherche, en fait ça fait 2 jours que je creuse et il y a surement une solution simple.

Je tente de créer des fonctions VBA qui permettent de travailler avec les nouveaux Tableau Excel que l'on retrouve depuis 2007.
Donc:
Lire
Rechercher
Écrire
Etc...

J'ai un tableau Excel (voir le fichier joint) qui comporte 5 colonnes.

je voudrais:

- Afficher un combobox avec seulement les informations de la colonne "Phase" sans doublon
- Afficher la liste de la colonne Année dans un combobox sans doublon et filtré par la Combobox précédent de "Phase"
- Afficher la liste de "Description" dans une listbox Filtré selon "Phase" et "Année"
- Mettre à jour le tableau "Projets" si la "Description" est modifiée.
- Finalement ajouter une ligne au Tableau "Projet" avec les nouvelles valeurs de "Phase", "Année", "Description" etc...

Si vous pouvez, soit me donner une référence où je pourrais trouver un bon tutoriel sur les Tableaux Excel 2010 et VBA, ouo encore m'aider en me donnant le code nécessaire à solutionner mes problèmes.

Merci pour tout!!
 

Pièces jointes

  • Exemple ComboBox Tableau.xlsm
    31.5 KB · Affichages: 53

Robert

XLDnaute Barbatruc
Repose en paix
Re : Lire un Tableau Excel 2010 en VBA

Bonsoir le fil, bonsoir le forum,

En pièce jointe ton fichier modifié et commenté. Regarde les propriétés [ColumnCount] et [ColumnWidhts] de la combobox [CbxProjets]. Elle ont comme valeur respective 2 et ;0 pt ce qui signifie que cette combobox a deux colonnes (0 et 1) avec la seconde cachée. On y récupère le numéro de ligne de l'élément sélectionné.
Difficile avec ton UserForm incomplète de faire valider la modification de la Description. J'ai utiliséle Double-clic dans la combobox [CbxProjets].

Pour le rajout d'une ligne il faudra t'y prendre autrement car si tu filtres au départ c'est pas très compatible...
Quand c'est pour moi j'utilise une recherche qui me renvoie les données filtrées dans une ListBox. Un double-clic dans un des éléments de cette ListBox dispatches les données dans autant de TextBoxes/ComboBoxes que nécéssaire. Cela me permet de modifier une ou plusieurs données via un bouton Modifier. Pour une nouvelle ligne de données, je saisie directement les nouvelles donnés dans les TextBoxes/Comboboxes respectives et je valide à l'aide d'un bouton Nouveau. Mais j'avoue que j'ai eu la flemme de tout refaire...

Le fichier :
 

Pièces jointes

  • Solgti_v01.xlsm
    42.2 KB · Affichages: 44

solgti

XLDnaute Junior
Re : Lire un Tableau Excel 2010 en VBA

Bonsoir à vous 2, vos information sont très très intéressantes, j'ai commencé à m'attaquer à leurs compréhension et je suis bien heureux d'avoir fait appel à vous, car vous m'avez apporter beaucoup plus de réponses que je n'ai pu trouver en 2 jours.

Si je peux me permettre j'ai une petite question pour Robert, en exécutant votre code il y a un petit bogue que j'ai tenté de corriger, mais sans succès.

En effet à l'utilisation si vous faites:
- Choisir Phase par exemple 1
- Choisir Année par exemple 2014
- Et que vous changer Phase pour 2

La routine CbxYear_Change() bloque sur:
Set PLV = Range("Projets[Description]").SpecialCells(xlCellTypeVisible) 'définit la plage PLV (les description visibles, non filtrées)

Merci de me donner encore un petit coup de main

Solgti
 

solgti

XLDnaute Junior
Re : Lire un Tableau Excel 2010 en VBA

Bonsoir le fil, bonsoir Robert,

Merci infiniment, vous m'avez vraiment rendu service, je m'attendais à recevoir quelques informations et une piste de solution, mais vous m'avez donner la plus grande partie des fonctions dont je vais avoir besoin, c'est beaucoup plus que ce à quoi je m'attendais.

Je vais tenter de bien tirer profit de votre expérience que vous partagez aussi ouvertement et gentiment.

Je navigue sur internet et on rencontre différents forums, mais je n'en ai jamais vu de la qualité des interventions et intervenants de celui-ci.

Au plaisir de croiser votre chemin (clavier) de nouveau.

Encore merci!

Solgti.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Lire un Tableau Excel 2010 en VBA

Bonjour le fil, bonjour le forum,

Solgti, en pièce jointe la version 03 avec une userform qui reprend la méthode dont je t'avais parlé. Regarde la simplicité du code pour encore plus d'efficacité (à mon avis).
soit :
• Tu tapes le texte recherché dans la textbox Rechercher.
La ListBox1 affiche toutes le lignes contenant le texte recherché.
Un double-clic dans la Listbox1 dispatche les données de la ligne dans les 5 textboxes de donnée.
Modifie la ou les données dans la ou les textboxes correspondantes.
Valide avec le bouton Modifier.
• Tu édites les données dans les textboxes de données.
Tu valides avec le bouton Nouveau.

Les données sont alors soit modifiées soit rajoutées dans la dernière ligne du tableau... L'Userform se réinitialise. Utilise le bouton Sortir pour le fermer...

Tu peux même déplacer le tableau, ça fonctionne toujours...
Le fichier :

 

Pièces jointes

  • Solgti_v03.xlsm
    50.7 KB · Affichages: 53
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Lire un Tableau Excel 2010 en VBA

salut

autre proposition avec les listes déroulantes, comme au début, pour la syntaxe "Tableau".
Quant au choix de la méthode de gestion des données, filtrer directement les colonnes du tableau permet d'éviter le formulaire, non ?
 

Pièces jointes

  • UsF et Tableau.xlsm
    29.1 KB · Affichages: 62
  • UsF et Tableau.xlsm
    29.1 KB · Affichages: 55
  • UsF et Tableau.xlsm
    29.1 KB · Affichages: 57

Regueiro

XLDnaute Impliqué
Re : Lire un Tableau Excel 2010 en VBA

Bonjour à Tous.
Robert dans ton fichier Version 3.
Modifier le code suivant :
Private Sub TextBox1_Change() 'au changement dans la TextBox1
Dim LI As Range 'déclare la variable LI (LIgne)
Dim R As Range 'déclare la variable R (Recherche)
Dim I As Byte 'déclare la variable I (Incrément)

Me.ListBox1.Clear 'vide la ListBox1
'For Each LI In Range("Projets[#All]").Rows
For Each LI In Range("Projets[#Data]").Rows

Ainsi la recherche ne se fait pas sur les entêtes
A+
 

solgti

XLDnaute Junior
Re : Lire un Tableau Excel 2010 en VBA

Bonjour à tous, encore une fois je suis conquis par ce forum, la qualité des intervenants est incroyable.

C'est extraordinaire de voir les solutions à un même problème.

J'ai une petite question pour SI.

votre solution utilise la fonction FIND pour trouver le montant du projet, mais comme il y a le même nom de projet pour 2 phases ou encore pour 2 années, la fonction localise le premier trouvé.

Exemple:
c1 = 1, c2 = 2014 et C3 = Dry-O-Tron
Dans ce cas C4 = 14100 euro
Mais si je choisi
c1 = 2, c2 = 2014 et C3 = Dry-O-Tron
C4 = 14100 euro, mais dans ce cas C4 = 15900 euro

Donc la fonction de recherche FIND devrait, je crois, utiliser aussi comme paramètre le contenu de C1 et C2.

J'ai tenté de corriger, mais je n'y suis pas arrivé. SI vous pouviez m'aider encore un peu ce serait très gentil.

Encore merci à tous

Solgti
 

Discussions similaires

Réponses
1
Affichages
248

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote