Convertir un tableau en matrice en tableau de base de données
Fermé
shadowspirit
Messages postés
2
Date d'inscription
lundi 16 mai 2016
Statut
Membre
Dernière intervention
17 mai 2016
-
Modifié par shadowspirit le 16/05/2016 à 21:03
via55 Messages postés 14496 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 22 novembre 2024 - 18 mai 2016 à 02:47
via55 Messages postés 14496 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 22 novembre 2024 - 18 mai 2016 à 02:47
A voir également:
- Convertir un tableau en matrice en tableau de base de données
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Trier un tableau excel - Guide
- Les données fournies dans le fichier à télécharger peuvent être synthétisées par le tableau récapitulatif suivant. dans le fichier, générez ce tableau automatiquement (tableau croisé dynamique ou table de pilote) à partir des 4 premières colonnes. cinq valeurs manquent dans le tableau suivant. retrouvez-les dans votre tableau puis reportez-les, arrondies à l’entier le plus proche, dans la zone de réponse. - Forum Excel
3 réponses
via55
Messages postés
14496
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
22 novembre 2024
2 735
16 mai 2016 à 21:24
16 mai 2016 à 21:24
Bonsoir shadowspirit
A priori pas besoin de macro, la formule :
=INDEX('Planning matrice'!$E$6:$M$372;EQUIV(C16;'Planning matrice'!$D$6:$D$372;0);EQUIV(D16;'Planning matrice'!$E$5:$N$5;0)) en E16 de bdd puis étirée vers la bas doit retourner la lettre correspondant à l'équipe
Cdlmnt
Via
A priori pas besoin de macro, la formule :
=INDEX('Planning matrice'!$E$6:$M$372;EQUIV(C16;'Planning matrice'!$D$6:$D$372;0);EQUIV(D16;'Planning matrice'!$E$5:$N$5;0)) en E16 de bdd puis étirée vers la bas doit retourner la lettre correspondant à l'équipe
Cdlmnt
Via
shadowspirit
Messages postés
2
Date d'inscription
lundi 16 mai 2016
Statut
Membre
Dernière intervention
17 mai 2016
17 mai 2016 à 21:58
17 mai 2016 à 21:58
Bonsoir,
Merci pour ta réponse Via55.
Effectivement ta formule me permet d'avoir les informations par rapport au placement en équipe du personnel.
Seulement la feuille "planning bdd" n'existe pas au départ et par la suite elle n'est pas figée (la feuille utilisé en interne est la feuille "planning matrice" et ce n'est pas près de changer pour l'instant. des personnes peuvent y être rajoutées ou enlevées).
C'est pour ça que j'ai besoin d'une macro, pour qu'à chaque fois que je travaille dessus, je mets à jour la feuille "planning bdd".
Ma maitrise étant limitée, je suis parti d'un enregistrement de macro pour connaitre le code des mouvements que je souhaitais faire. Ce qui me manque c'est la définition de boucle pour ne pas avoir à répéter le code pour chaque personne et chaque colonne dans la feuille "planning matrice".
Sub Planning_bdd()
'
' Planning_bdd Macro
'
'Copier_coller colonne
'Copier_coller 1ere colonne
Sheets("Planning matrice").Select
Range("E6:E393").Select
Selection.Copy
Sheets("Planning bdd").Select
Range("F6").Select
ActiveSheet.Paste
'Copier_coller 2eme colonne
Sheets("Planning matrice").Select
Range("F6:F393").Select
Selection.Copy
Sheets("Planning bdd").Select
Range("F6").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
'Copier_coller 3eme colonne
Sheets("Planning matrice").Select
Range("G6:G393").Select
Selection.Copy
Sheets("Planning bdd").Select
Range("F6").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
'Copier_coller 4eme colonne
Sheets("Planning matrice").Select
Range("H6:H393").Select
Selection.Copy
Sheets("Planning bdd").Select
Range("F6").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
Ceci correspond à la formule que tu as fait, j'aimerais ne pas la réécrire pour chaque colonne mais y mettre une boucle.
En plus de cela, j'aurais aussi besoin du code pour créer la colonne D de la feuille "planning bdd" (le nom de la personne correspondante) avec une boucle pour ne pas avoir à le réécrire aussi.
J'espère t'avoir assez bien décrit mon besoin, dis le moi si il n'est pas clair et où...
Merci d'avance pour ta contribution
End Sub
Merci pour ta réponse Via55.
Effectivement ta formule me permet d'avoir les informations par rapport au placement en équipe du personnel.
Seulement la feuille "planning bdd" n'existe pas au départ et par la suite elle n'est pas figée (la feuille utilisé en interne est la feuille "planning matrice" et ce n'est pas près de changer pour l'instant. des personnes peuvent y être rajoutées ou enlevées).
C'est pour ça que j'ai besoin d'une macro, pour qu'à chaque fois que je travaille dessus, je mets à jour la feuille "planning bdd".
Ma maitrise étant limitée, je suis parti d'un enregistrement de macro pour connaitre le code des mouvements que je souhaitais faire. Ce qui me manque c'est la définition de boucle pour ne pas avoir à répéter le code pour chaque personne et chaque colonne dans la feuille "planning matrice".
Sub Planning_bdd()
'
' Planning_bdd Macro
'
'Copier_coller colonne
'Copier_coller 1ere colonne
Sheets("Planning matrice").Select
Range("E6:E393").Select
Selection.Copy
Sheets("Planning bdd").Select
Range("F6").Select
ActiveSheet.Paste
'Copier_coller 2eme colonne
Sheets("Planning matrice").Select
Range("F6:F393").Select
Selection.Copy
Sheets("Planning bdd").Select
Range("F6").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
'Copier_coller 3eme colonne
Sheets("Planning matrice").Select
Range("G6:G393").Select
Selection.Copy
Sheets("Planning bdd").Select
Range("F6").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
'Copier_coller 4eme colonne
Sheets("Planning matrice").Select
Range("H6:H393").Select
Selection.Copy
Sheets("Planning bdd").Select
Range("F6").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
Ceci correspond à la formule que tu as fait, j'aimerais ne pas la réécrire pour chaque colonne mais y mettre une boucle.
En plus de cela, j'aurais aussi besoin du code pour créer la colonne D de la feuille "planning bdd" (le nom de la personne correspondante) avec une boucle pour ne pas avoir à le réécrire aussi.
J'espère t'avoir assez bien décrit mon besoin, dis le moi si il n'est pas clair et où...
Merci d'avance pour ta contribution
End Sub
via55
Messages postés
14496
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
22 novembre 2024
2 735
18 mai 2016 à 02:47
18 mai 2016 à 02:47
Bonjour,
Essaie cette macro
Cdlmnt
Via
Essaie cette macro
Sub mise_a_jour() Dim LigneM As Long, ligneB As Long, col As Integer '1ere ligne vide de bdd ligneB = Sheets("Planning bdd").Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row + 1 'efface bbd Sheets("Planning bdd").Range("A6:E" & ligneB).ClearContents 'dernière ligne de matrice LigneM = Sheets("Planning matrice").Columns(4).Find("*", , , , xlByColumns, xlPrevious).Row 'nombre de lignes de matrice nbl = LigneM - 5 'dernière colonne de matrice col = Sheets("Planning matrice").Rows(5).Find("*", , , , xlByRows, xlPrevious).Column 'desactive rafraichissement ecran Application.ScreenUpdating = False 'Boucle sur colonnes noms de matrice For y = 5 To col 'nom personnel nom = Sheets("Planning matrice").Cells(5, y) Sheets("Planning matrice").Select ' premiere ligne vide bdd ligneB = Sheets("Planning bdd").Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row + 1 'copie les 3 colonnes de matrice correpondant à date Range("B6:D" & LigneM).Select Selection.Copy Sheets("Planning bdd").Select Range("A" & ligneB).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'copie le nom Sheets("Planning bdd").Range("D" & ligneB & ":" & "D" & ligneB + nbl - 1) = nom 'copie la colonne équipe Sheets("Planning matrice").Select Range(Cells(6, y), Cells(LigneM, y)).Select Selection.Copy Sheets("Planning bdd").Select Range("E" & ligneB).Select ActiveSheet.Paste Next y 'reactive rafraichissement ecran Application.ScreenUpdating = True End Sub
Cdlmnt
Via