Dans un fichier, j'ai un onglet Data reprenant la réf., le nom des chantiers et les initiales des gestionnaires de chantiers plus d'autres onglets nommés avec ces initiales et contenant chacun un tableau structuré avec la même structure.
Il arrive parfois qu'un chantier soit réattribué à un autre gestionnaire. J'aimerais éviter le simple couper/coller manuel d'un tableau à un autre.
Auriez-vous une solution VBA qui me permette, par ex, de déplacer facilement une ligne d'un tableau structuré à un autre de son choix ?
Merci d'avance à qui voudra bien se pencher sur ma demande.
Ça marche mais... la ligne collée dans le tableau de destination contient uniquement les valeurs et, donc, les formules de cette ligne sont perdues.
Avec un simple copier/coller d'une ligne du tableau source vers celui de destination, les formules restent "liées" aux cellules de la source. Je veux dire que la formule suivante, dans le tableau tabCD :
VB:
=[@[CA total]]-[@Facturé]
devient
Code:
=tabCD[@[CA total]]-tabCD[@Facturé]
lorsque la ligne est collée dans un autre tableau.
Existe-t-il un moyen d'éviter cela, càd de déplacer une ligne en gardant les formules mais sans référence au tableau source ?
Ça marche mais... la ligne collée dans le tableau de destination contient uniquement les valeurs et, donc, les formules de cette ligne sont perdues.
Avec un simple copier/coller d'une ligne du tableau source vers celui de destination, les formules restent "liées" aux cellules de la source. Je veux dire que la formule suivante, dans le tableau tabCD :
VB:
=[@[CA total]]-[@Facturé]
devient
Code:
=tabCD[@[CA total]]-tabCD[@Facturé]
lorsque la ligne est collée dans un autre tableau.
Existe-t-il un moyen d'éviter cela, càd de déplacer une ligne en gardant les formules mais sans référence au tableau source ?
Juste une suggestion en l'absence de @vgendron, Copier les cellules n'ayant pas de formule et les ajouter au bas du tableau. Car à l'ajout d'une ligne, les formules sont automatiquement ajouter dans un tableau structuré.
A+
ha?? peut-etre un pb de version ?
la fonction existe pour ces versions
Excel for Microsoft 365 Excel for Microsoft 365 for Mac Excel for the web Excel 2021 Excel 2021 for Mac Excel 2019 Excel 2019 for Mac Excel 2016 Excel 2016 for Mac Excel 2013 Excel for Mac 2011 Less
ha?? peut-etre un pb de version ?
la fonction existe pour ces versions
Excel for Microsoft 365 Excel for Microsoft 365 for Mac Excel for the web Excel 2021 Excel 2021 for Mac Excel 2019 Excel 2019 for Mac Excel 2016 Excel 2016 for Mac Excel 2013 Excel for Mac 2011 Less
Si ça marche au poil avec mes fichiers tests, ce n'est pas le cas dans mon fichier de travail qui contient des onglets supplémentaires avec des tableaux de synthèse, des listes...
J'obtiens ce message lorsque je clique sur le bouton "Déplacer chantier" :
Erreur d'exécution '9' :
L'indice n'appartient pas à la sélection
Si ça marche au poil avec mes fichiers tests, ce n'est pas le cas dans mon fichier de travail qui contient des onglets supplémentaires avec des tableaux de synthèse, des listes...
J'obtiens ce message lorsque je clique sur le bouton "Déplacer chantier" :
Hé, oui, le piège lorsqu'on fournit un fichier qui ne reflète pas exactement le fichier réel.
Question: Est-ce que les onglets supplémentaires se trouvent dans le tableau "tabChantiers" en colonne C?
edit: à supposer que c'est le cas (question ci-dessus), Remplace le code de l'userform comme ci-dessous.
VB:
Private Sub UserForm_Initialize()
Dim d As Object, cel As Range
Set d = CreateObject("scripting.dictionary")
Me.Cbx_Source.Clear
Me.Cbx_Dest.Clear
For Each cel In Range("tabChantiers[Gest.]")
d(cel.Value) = ""
Next cel
If d.Count > 0 Then
For i = 0 To d.Count - 1
With Sheets(d.keys()(i)).ListObjects(1)
Me.Cbx_Source.AddItem .Name
Me.Cbx_Dest.AddItem .Name
End With
Next i
End If
End Sub
Hé, oui, le piège lorsqu'on fournit un fichier qui ne reflète pas exactement le fichier réel.
Question: Est-ce que les onglets supplémentaires se trouvent dans le tableau "tabChantiers" en colonne C?
Non, là ça ne pose pas de problème d'ajouter des onglets pour des gestionnaires supplémentaires avec la même structure de tableau.
Le problème se pose plutôt lorsque l'onglet supplémentaire contient un tableau différent des précédents. Par ex. dans l'un d'entre-eux j'ai une synthèse des résultats par gestionnaire, dans un autre, une liste de chantiers non encore "emportés" par la boîte. Même un simple onglet vide empêche le code de fonctionner.