Feuille BD budgets primitifs : tableau BDBudgetPrimitifDépensesAlimentaires

Bonjour à toutes et à tous,

Merci à cele (celles), à celui (ceux) Qui pourra m'aider à résoudre le problème du tableau BDBudgetPrimitifDépensesAlimentaires : après la création d'un crédit budgétaire, la colonne Article se remplit de deux lignes pour chaque article, je n'ai hélas pas trouvé pourquoi.

Bonnes journée et continuation à toutes et à tous. Prenez bien soin de vous.

Bonjour,

La macro modifiée:

Sub GénérerBudgetPrimitifDépensesAlimentaires()
    Dim I As Long, J As Integer, DerLig As Long
    Application.ScreenUpdating = False

    'Si c'est un budget primitif dépenses alimentaires.
    'effacement des données existantes dans "TabBDBudgetPrimitifDépensesAlimentaires"
    DerLig = Sheets("BD budgets primitifs").ListObjects("TabBDBudgetPrimitifDépensesAlimentaires").DataBodyRange.SpecialCells(xlCellTypeConstants).Count
    If DerLig > 5 Then Range("TabBDBudgetPrimitifDépensesAlimentaires").Delete

    'Remplissage de "TabBDBudgetPrimitifDépensesAlimentaires"
    DerLig = Sheets("BD budgets primitifs").ListObjects("TabBDCréditsBudgétaires").DataBodyRange.SpecialCells(xlCellTypeConstants).Count
    For I = 1 To DerLig
        If Range("TabBDCréditsBudgétaires[Catégorie]").Item(I) = "Budget primitif dépenses alimentaires" Then
            'Ajouter une ligne dans le tableau structuré TabBudgetPrimitifDépensesAlimentaires et récupérer son indice (J).
            Range("TabBDBudgetPrimitifDépensesAlimentaires").ListObject.ListRows.Add
            J = Range("TabBDBudgetPrimitifDépensesAlimentaires").ListObject.ListRows.Count
            'Insérer les données du tableau structuré TabBDCréditsBudgétaires (indice I) dans la tableau structuré TabBudgetPrimitifDépenses alimentaires (indice J).
            Range("TabBDBudgetPrimitifDépensesAlimentaires[Catégorie]").Item(J) = Range("TabBDCréditsBudgétaires[Catégorie]").Item(I)
            Range("TabBDBudgetPrimitifDépensesAlimentaires[Nature article]").Item(J) = Range("TabBDCréditsBudgétaires[Nature article]").Item(I)
            Range("TabBDBudgetPrimitifDépensesAlimentaires[Article]").Item(J) = Range("TabBDCréditsBudgétaires[Article]").Item(I)
            Range("TabBDBudgetPrimitifDépensesAlimentaires[Total BP]").Item(J) = Range("TabBDCréditsBudgétaires[Total BP]").Item(I)
            Range("TabBDBudgetPrimitifDépensesAlimentaires[Date création]").Item(J) = Range("TabBDCréditsBudgétaires[Date création]").Item(I)
            Range("TabBDBudgetPrimitifDépensesAlimentaires[Numéro création]").Item(J) = Range("TabBDCréditsBudgétaires[Numéro création]").Item(I)
        End If
    Next I
    Application.ScreenUpdating = True
End Sub

Cdlt

Merci Arturo83. Je verrai cela demain car aujourd'hui, je n'avais pas avoir le temps de m'en occuper. Pour ce qui est de l'autre fichier, avez-pu trouver une solution pour résoudre le problème (Nom du fil : Numéro de création dans les tableaux structurés situés à droite

avez-pu trouver une solution pour résoudre le problème (Nom du fil : Numéro de création dans les tableaux structurés situés à droite

OUI, dans RenuméroterTabBDBudgetPrimitifDépensesAlimentaires(), remplacez la ligne:

Range("TabBDBudgetPrimitifDépensesAlimentaires[Numéro création]").Item(N) = cbCatégorie.Value & "-" & Format(K, "00")
par
 Range("TabBDBudgetPrimitifDépensesAlimentaires[Numéro création]").Item(N) = tbCodeCatégorie.Value & "-" & Format(K, "00")

Merci. Pour la même raison, citée dans mon précédent message, je verrai cela demain.

Bonjour,

La macro modifiée:

Sub GénérerBudgetPrimitifDépensesAlimentaires()
    Dim I As Long, J As Integer, DerLig As Long
    Application.ScreenUpdating = False

    'Si c'est un budget primitif dépenses alimentaires.
    'effacement des données existantes dans "TabBDBudgetPrimitifDépensesAlimentaires"
    DerLig = Sheets("BD budgets primitifs").ListObjects("TabBDBudgetPrimitifDépensesAlimentaires").DataBodyRange.SpecialCells(xlCellTypeConstants).Count
    If DerLig > 5 Then Range("TabBDBudgetPrimitifDépensesAlimentaires").Delete

    'Remplissage de "TabBDBudgetPrimitifDépensesAlimentaires"
    DerLig = Sheets("BD budgets primitifs").ListObjects("TabBDCréditsBudgétaires").DataBodyRange.SpecialCells(xlCellTypeConstants).Count
    For I = 1 To DerLig
        If Range("TabBDCréditsBudgétaires[Catégorie]").Item(I) = "Budget primitif dépenses alimentaires" Then
            'Ajouter une ligne dans le tableau structuré TabBudgetPrimitifDépensesAlimentaires et récupérer son indice (J).
            Range("TabBDBudgetPrimitifDépensesAlimentaires").ListObject.ListRows.Add
            J = Range("TabBDBudgetPrimitifDépensesAlimentaires").ListObject.ListRows.Count
            'Insérer les données du tableau structuré TabBDCréditsBudgétaires (indice I) dans la tableau structuré TabBudgetPrimitifDépenses alimentaires (indice J).
            Range("TabBDBudgetPrimitifDépensesAlimentaires[Catégorie]").Item(J) = Range("TabBDCréditsBudgétaires[Catégorie]").Item(I)
            Range("TabBDBudgetPrimitifDépensesAlimentaires[Nature article]").Item(J) = Range("TabBDCréditsBudgétaires[Nature article]").Item(I)
            Range("TabBDBudgetPrimitifDépensesAlimentaires[Article]").Item(J) = Range("TabBDCréditsBudgétaires[Article]").Item(I)
            Range("TabBDBudgetPrimitifDépensesAlimentaires[Total BP]").Item(J) = Range("TabBDCréditsBudgétaires[Total BP]").Item(I)
            Range("TabBDBudgetPrimitifDépensesAlimentaires[Date création]").Item(J) = Range("TabBDCréditsBudgétaires[Date création]").Item(I)
            Range("TabBDBudgetPrimitifDépensesAlimentaires[Numéro création]").Item(J) = Range("TabBDCréditsBudgétaires[Numéro création]").Item(I)
        End If
    Next I
    Application.ScreenUpdating = True
End Sub

Cdlt

Il doit y avoir une erreur : cela ne fonctionne pas. Message d'erreur. Budgetsprimitifs doit être remplacé par quoi : CréditsBudgétaires ou budgetprimitifdépensesalimentaires ?

Bonjour,

Je repris le fichier initial de ce fil et y ait apporté les 2 modifications préconisées et tout marche bien.

Cdlt

Où avez-vous porté les modifications ? J'ai regardé GénérerTabBDBudgetPrimitifDépensesAlimentaires, BDBudgetsPrimitifs est toujours présent. Je n'avais pas réalisé, il s'agit de la feuille BD budgets primitifs, je cherchais un tableau structuré. Dans votre fichier, cela fonctionne, dans le mien non. Donc dans votre dernier fichier, merci de me préciser où vous fait des modifications.

BDBudgetsPrimitifs est présent dans cette ligne, pour trouver la dernière ligne du tableau;

 DerLig = Sheets("BD budgets primitifs").ListObjects("TabBDCréditsBudgétaires").DataBodyRange.SpecialCells(xlCellTypeConstants).Count

Cela servira de référence pour remplir le GénérerTabBDBudgetPrimitifDépensesAlimentaires

BDBudgetsPrimitifs est présent dans cette ligne, pour trouver la dernière ligne du tableau;

 DerLig = Sheets("BD budgets primitifs").ListObjects("TabBDCréditsBudgétaires").DataBodyRange.SpecialCells(xlCellTypeConstants).Count

Cela servira de référence pour remplir le GénérerTabBDBudgetPrimitifDépensesAlimentaires

BDBudgetsPrimitifs est présent dans cette ligne, pour trouver la dernière ligne du tableau;

 DerLig = Sheets("BD budgets primitifs").ListObjects("TabBDCréditsBudgétaires").DataBodyRange.SpecialCells(xlCellTypeConstants).Count

Cela servira de référence pour remplir le GénérerTabBDBudgetPrimitifDépensesAlimentaires

De quel derLig s'agit-il (le premier : effacement ou le second (remplissage) ?

Regardez la feuille BD budgets primitifs, les deux premiers tableaux structurés. Dans le second, clic sur Générer entraine une erreur.

Explications

Dans le premier, on cherche la dernière ligne du TabBDBudgetPrimitifDépensesAlimentaires, ceci pour effacer toutes les données existantes dans ce tableau

 'effacement des données existantes dans "TabBDBudgetPrimitifDépensesAlimentaires"
    DerLig = Sheets("BD budgets primitifs").ListObjects("TabBDBudgetPrimitifDépensesAlimentaires").DataBodyRange.SpecialCells(xlCellTypeConstants).Count
    If DerLig > 5 Then Range("TabBDBudgetPrimitifDépensesAlimentaires").Delete

Ensuite, dans le deuxième, on cherche la dernière ligne du TabBDCréditsBudgétaires pour pouvoir reconstruire le TabBDBudgetPrimitifDépensesAlimentaires avec le même nombre de lignes que TabBDCréditsBudgétaires

 DerLig = Sheets("BD budgets primitifs").ListObjects("TabBDCréditsBudgétaires").DataBodyRange.SpecialCells(xlCellTypeConstants).Count

Est-ce plus clair?

Attention aussi de ne pas confondre "BDBudgetsPrimitifs" et la feuille "BD budgets primitifs", dans le cas présent, il s'agit bien de la feuille.

Attention aussi de ne pas confondre "BDBudgetsPrimitifs" et la feuille "BD budgets primitifs", dans le cas présent, il s'agit bien de la feuille.

Quelle différence entre les deux ? Où les trouve-t-on ?

Dans mon fichier, ai-je commis une erreur de frappe entrainant le message d'erreur ?

Quelle différence entre les deux ? Où les trouve-t-on ?

Je vous renvoie à votre message de 12h28:

Où avez-vous porté les modifications ? J'ai regardé GénérerTabBDBudgetPrimitifDépensesAlimentaires, BDBudgetsPrimitifs est toujours présent. Je n'avais pas réalisé, il s'agit de la feuille BD budgets primitifs, je cherchais un tableau structuré. Dans votre fichier, cela fonctionne, dans le mien non. Donc dans votre dernier fichier, merci de me préciser où vous fait des modifications.

C'est bien vous qui avez fait la confusion

Dans mon fichier, tout semble être identique dans la procédure GénérerBudgetPrimitifDépensesAlimentaires avec votre fichier et pourtant, à l'exécution, j'ai un message d'erreur dans cette procédure. Merci de me dire pourquoi et comment y remédier : j'ai beau lire, relire, relire, je ne trouve aucune différence.

Comme ça marche bien chez moi, je ne peux pas trouver une erreur qui n'existe pas, alors renvoyer votre fichier et je regarderai.

Bonjour à tous,

Vous avez une procédure d'effacement, pourquoi ne pas l'utiliser ?

Remplacez :

    DerLig = Sheets("BD budgets primitifs").ListObjects("TabBDBudgetPrimitifDépensesAlimentaires").DataBodyRange.SpecialCells(xlCellTypeConstants).Count
    If DerLig > 5 Then Range("TabBDBudgetprimitifDépensesAlimentaires").Delete

par :

    Call PurgerTabBDBudgetPrimitifDépensesAlimentaires

Comme ça marche bien chez moi, je ne peux pas trouver une erreur qui n'existe pas, alors renvoyer votre fichier et je regarderai.

C'est parce que le tableau est vide dès le départ, corrigez comme ceci:

'effacement des données existantes dans "TabBDBudgetPrimitifDépensesAlimentaires"
On Error Resume Next
DerLig = Sheets("BD budgets primitifs").ListObjects("TabBDBudgetPrimitifDépensesAlimentaires").DataBodyRange.SpecialCells(xlCellTypeConstants).Count

Mais je vois que BeGood, signale l'existence d'une macro qui fait le même travail, alors autant l'utiliser.

Avec votre on error, cela fonctionne, plus de message d'erreur.

Rechercher des sujets similaires à "feuille budgets primitifs tableau bdbudgetprimitifdepensesalimentaires"