Remplissage automatique à partir d'onglets

  • Initiateur de la discussion Initiateur de la discussion Jul98800
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

Jul98800

Guest
Bonjour, j'aimerais compléter le tableau dans l'onglet Tableau synthetique, à partir des fiches remplies dans les onglets à la suite. De plus, j aimerais compléter les cases X= et Y= dans les fiches, cette fois à partir de l onglet Tableau synthetique.
Ci joint le fichier. Merci à vous!
 

Pièces jointes

Re : Remplissage automatique à partir d'onglets

Bonjour à tous


Un début de solution (en VBA)
(je te laisse finaliser la partie fastidieuse voir les commentaires dans le code 😉)
Code:
Sub a()
Dim MesValeurs, f As Worksheet, t, i&
MesValeurs = Array("C3", "C9", "C5", "C7", "G9", "G5", "G7")
'continuer à remplir l'array avec les adresses des cellules désirées (dans l'ordre)
    For Each f In Worksheets
    If f.Name Like "A*" Then
    ReDim t(UBound(MesValeurs))
        For i = LBound(MesValeurs) To UBound(MesValeurs)
        t(i) = f.Range(MesValeurs(i)).Range("A1").Value
        Next i
        Sheets("Tableau synthétique").Cells(Rows.Count, 1).End(3)(2).Resize(1, 7) = t
        'adapater le resize selon la taille de l'array
        Erase t
    End If
Next f
End Sub

NB: Normalement, il devrait y avoir 41 items dans l'array MesValeurs et le dernier sera B84.
C'est là qu'est le fastidieux, le remplissage de l'array à la mimine 😉
 
Dernière édition:
Re : Remplissage automatique à partir d'onglets

Bonjour Jul, bonjour le forum,

Ce que tu demandes est relativement facile à faire. Il suffit de transposer les données d'un des tableaux sur une ligne vide du Tableau synthétique. Ce qui nous aiderait énormément c'est tu renvoies le fichier mais en mettant, par exemple dans l'onglet ADO14, en commentaire dans la cellule contenant la donnée, la colonne dans laquelle sera transposée cette donnée. Soit, C3/A, C5/C, C7/D, C9/B, etc. (Adresse cellule/Commentaire).
J'ai commencé à le faire mais c'est trop long et j'ai eu la flemme d'aller jusqu'au bout...

[Édition]
Pif, paf, poum, carambolage Staplesque ! Alors bonjour Monsieur Staple.
 
Dernière édition:
Re : Remplissage automatique à partir d'onglets

Merci de la rapidité de cette réponse. J ai commencé un onglet "Type", avant de continuer est ce cela qu il faut faire? Merci
 

Pièces jointes

Re : Remplissage automatique à partir d'onglets

Re

Jul98800
Testes déjà la macro telle quelle et regardes ce qui se passe dans l'onglet Tableau synthetique.
Qu'observes-tu ?


NB
: MesValeurs est ce qu'on appelle un tableau (ou Array en anglais)
(Voir l'aide VBA ou sur le net pour les détails)
Actuellement il y a combien d'élément dans l'Array?
Réponse : 7
d'où le Resize(1, 7)

Donc il faudra adapter en conséquence, quand tu auras fini de saisir toutes les adresses des cellules que tu veux recopier.

Est-ce plus clair ?
 
Dernière édition:
Re : Remplissage automatique à partir d'onglets

Bonjour à vous,
alors, ci-joint le tableau avec la ligne remplie pour Robert et les lignes de code VBA pour Staple à la fin du message.
D ailleurs, le programme ne se lance pas tel quel dans mon VBA: "Erreur de compilation: Incorrect dans le volet Exécution"
La difficulté aussi je pense que c est les choix multiples...
Merci!

Sub a()
Dim MesValeurs, f As Worksheet, t, i&<br />
MesValeurs = Array("C3", "C9", "C5", "C7", "G9", "G5", "G7", "H3", "I3", "L10", "L9", "F16-F19", "F21-F26", "F28-F32", "F34-F39", "F41-F43", "F45-F48", "F50-F54", "L16-L21", "L23-L26", "L28-L37", "L40-L44", "L46-L52", "K54", "F58-F59-I58-I59", "L58", "F63-F67", "F69-F71", "L64-L71", "H68", "E73", "L73", "C78", "G78", "C80", "C81", "C82", "K80", "K81", "B84")<br/>
'continuer à remplir l'array avec les adresses des cellules désirées (dans l'ordre)
For Each f In Worksheets
If f.Name Like "A*" Then
ReDim t(UBound(MesValeurs))
For i = LBound(MesValeurs) To UBound(MesValeurs)
t(i) = f.Range(MesValeurs(i)).Range("A1").Value
Next i
Sheets("Tableau synthétique").Cells(Rows.Count, 1).End(3)(2).Resize(1, 7) = t
'adapater le resize selon la taille de l'array
Erase t
End If
Next f
End Sub
 

Pièces jointes

Re : Remplissage automatique à partir d'onglets

Bonjour à tous


C'est normal que cela ne fonctionne pas tel que tu l'as écrit
Excel ne connait pas "F21-F26"
Il faut mettre l'adresse d'une cellule seule (même si c'est une cellule fusionnée)
Et ensuite tu as zappé ce point
NB: MesValeurs est ce qu'on appelle un tableau (ou Array en anglais)
(Voir l'aide VBA ou sur le net pour les détails)
Actuellement il y a combien d'élément dans l'Array?
Réponse : 7
d'où le Resize(1, 7)
Le chiffre en gras (ici 7) représente le nombre d'éléments présent dans le tableau MesValeurs.
Donc ce ne peut pas être 7 puisque tu avais ajouté des éléments dans le tableau.
Pour connaitre la taille d'un tableau: utilise cette ligne
MsgBox Ubound(MesValeurs)
Pour résumer MesValeurs doit contenir uniquement l'adresse d'une cellule entre guillemet séparée par une virgule.
Comme j'avais commencé à le faire, et ensuite il faudra adapter le Resize(1, 7) en remplacant le 7 par le nombre affiché par le MsgBox de cette petite macro
Code:
Sub TailleMesValeurs()
Dim MesValeurs
'recopie dans cette macro ton tabela une fois qu'il sera correctement rempli.
MesValeurs=Array("C5", etc...) 'mettre toutes les cellules utiles
MsgBox Ubound(MesValeurs)
End Sub

NB: Pour connaitre l'adresse des cellules, tu les sélectionnes et tu notes l'adresse comme montré ci-dessous
01adresse.png
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
699
Réponses
16
Affichages
509
Retour