XL 2013 Importation et mise à jour (code de job)

an@s

XLDnaute Occasionnel
Bonsoir à tous,
dans l'exemple ci-joint j'essaie de faire l'importation des données de feuille Balance vers le classeur CB à partir de la cellule A8.
en plus de ça pour chaque ligne importée je saisie un code manuellement dans la colonne F et quand je fais l'importation une deuxième fois le code importe les nouvelles lignes et garde les anciennes avec le même code.
le problème sur mon exemple c'est que je n'ai pas une seule colonne de référence sans doublons, mais pour éviter cela il faut considérer trois colonnes A, C et D chose qui m'empêche d'appliquer le même code ci-dessous produit par JOB dans un exemple similaire.

Merci d'avance
An@s


VB:
Private Sub CommandButton1_Click()
Dim t, nlig&, d As Object, i&, rest(), j&
Application.ScreenUpdating = False
With Workbooks.Open(ThisWorkbook.Path & "\Paie-Mens.xlsx").Sheets("Feuil1")
  t = .Range("A5:AC" & .Range("F" & .Rows.Count).End(xlUp).Row + 2)
  nlig = UBound(t)
  .Parent.Close False
End With
'---restitution du 1er tableau---
[E:E].Copy [AE1] 'sauvegarde la colonne E (matricules) en colonne auxiliaire AE
Range("A3:AC" & Rows.Count).ClearContents 'RAZ
[A3].Resize(nlig, 29) = t
'---liste des noms du 1er tableau---
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(t)
  If t(i, 5) <> "" Then d(t(i, 5)) = i 'repère la ligne
Next i
'---création du 2ème tableau (rest)---
t = Range("AD3:AE" & Range("AE" & Rows.Count).End(xlUp).Row + 1)
ReDim rest(1 To nlig, 1 To 1)
For i = 1 To UBound(t)
  If t(i, 2) <> "" And d.Exists(t(i, 2)) Then rest(d(t(i, 2)), 1) = t(i, 1)
Next i
'---restitution du 1er tableau rest---
[AE:AE].Delete 'à l'origine on a mis des formules en colonne AE
Range("AD3:AD" & Rows.Count).ClearContents 'RAZ
[AD3].Resize(nlig) = rest
'---Bordures---
Rows("3:" & Rows.Count).Borders.LineStyle = xlNone 'RAZ
For i = nlig To 1 Step -1
  If Range("D" & i + 2) <> "" Then 'dernière ligne effective
    [A3].Resize(i, 30).Borders.Weight = xlThin
    [A3].Resize(i, 30).Borders(xlInsideHorizontal).LineStyle = xlDot
    '[A3].Resize(i, 30).Borders(xlInsideHorizontal).Weight = xlHairline 'si l'on préfère
    Exit For
  End If
Next i
With ActiveSheet.UsedRange: End With 'actualise les barres de défilement
End Sub
 

Pièces jointes

  • Balance.xlsx
    10.3 KB · Affichages: 26
  • CB.xlsm
    24.7 KB · Affichages: 30

ChTi160

XLDnaute Barbatruc
Bonjour An@s
Bonjour le Fil ,le Forum
pour ce qui est de ta première réponse :
votre question concernant les feuilles: elles sont créées à l'avance et chaque feuille correspond à un département
ma question etait :
comment sont déterminés les Noms de Feuilles lors du transfert des données depuis le Fichier "Balence" ?
soit comment est remplit la Colonne des feuilles (G) (Code)(Abréviations) de la Colonne (D) " Département achats et affaires générales "
réponse :
1° :
Est ce que je peux supprimer l'onglet <Feuile test> et cette ligne du code sans que cela n'impact le fonctionnement du code?'Worksheets("Feuille Test").Range("A1").Resize(UBound(TabRecap, 2), UBound(TabRecap, 1)) = Application.Transpose(TabRecap)
OUI !!! on peut
2° :
Oui je vais y remédier
3°:
je vais y remédier
Tu testes et tu me dis.
voir Fichier
Bonne journée
jean marie
 

Pièces jointes

  • CB-Chti160-3.xlsm
    136.8 KB · Affichages: 13

ChTi160

XLDnaute Barbatruc
Bonjour an@s
Bonjour le Fil , le Forum
Merci de se retour;
j'ai modifié un peut le Fichier .
Une autre question a quoi servent les Numéros présent en Colonne 1 (A) de la feuille "RECAP" ?
Ne peut on les mettre après l'importation et le tri éventuel des Données ?
je me suis dis que l'on pourrait (mais je ne connais pas tes contraintes)
Créer une feuille nommée ici "Parametres" Qui reprend les Libellés possibles de la Colonne (Sections Analytiques - Libellé) et Les Codes Correspondants , cette feuille peut être masquée .(Gain de temps , plus de saisie manuelle )
Ps : je n'ai pas affiche la page "PARAMETRES " Click droit sur la barre des Noms de Feuilles , puis afficher etc etc
Amicalement
jean marie
 

Pièces jointes

  • CB-Chti160-4.xlsm
    157.1 KB · Affichages: 14

an@s

XLDnaute Occasionnel
Bonsoir Chti160, le forum

la colonne A je l'ai ajouté en premier lieu dans la feuille balance pour que ce soit une référence dans la feuille RECAP afin que le code "Mise à jour des données" garde les données que je saisie manuellement dans la colonne G, suite au code de JOB
donc la modification que vous avez faites sur le code efface les données de la colonne G après mise à jour chose qui ne répond pas sur mes critères, parce que les données de la colonne G je ne les saisie qu'une seule fois et non pas à chaque mise à jour sauf s'il y'a ajout d'une nouvelle ligne.

pour ce qui est la feuille paramètre et comme je t'ai dit elle ne servira pas à grand chose parce que les données de la colonne G je les saisie une seule fois et par la suite juste quand il y'a ajout de nouvelles ligne mais les anciennes garde toujours l'ancien code.

quant à votre dernière question, je vous informe que la feuille Balance je l'exporte d'un logiciel de comptabilité y compris les lignes dont la colonne de solde tenue de compte qui contient les zero, étant donnée que le code a été fait par job sur une autre problématique, je l'ai adapté sur cet exemple mais je n'ai pas pu ajouté une ligne pour que l'importation empêche les lignes dont les cellules de la colonne Solde tenue de compte contient des Zéros.

Pour finir je peux vous confirmer que je préfère la version 3 mais si vous pouvez ajouter une ligne dans le code de mise à jour pour empêcher l'importation les lignes dont les cellules de la colonne Solde tenue de compte contient des Zéros ce serait Nickel.

dans l'attente, je vous remercie encore une autre fois pour votre intérêt et la promptitude de vos réponses

Amicalement
An@s
 

ChTi160

XLDnaute Barbatruc
Bonjour an@s
Bonjour le Fil,le Forum
1° si j'ai bien compris tu as toujours le même nombre de lignes transférées 52 Colonne "A" (sauf cas particulier)
ainsi que les mêmes références dans la Colonne
Sections Analytiques - Libellé
2° tu dis
la colonne de solde tenue de compte qui contient les zero
je parlais de Cellules vides ! peut il y en avoir ?
3° je vais regarder ce que je peux faire pour le transfert des lignes dont "Solde tenue de compte" non Nulles .
je t'avoue que je n'ai pas bien compris l'utilisation de la Colonne "G" !
Si tu pouvais m'expliquer un peu plus Lol (pas évident hein?)
je regarde cela des que possible .
Bonne journée
jean marie
 

an@s

XLDnaute Occasionnel
Bonjour Chti160, le forum
1- non, nous pouvons avoir 80 ou 100 lignes transférées. Le nombre de lignes n'est pas constant.

2-Non, on ne peut pas avoir de cellule code dans la colonne solde de tenue compte.

3- la seule modification que je demande sur la 3ème version c'est de ne pas importer les lignes dont les cellules de la colonne solde de tenue compte égale zéro.

#pour la colonne G elle est faite pour identifier les données de la colonne libellé et les codes que je saisie sur cette colonne G permettent de dire vers quelle feuille chaque ligne doit être transférées

Cordialement
An@s
 

ChTi160

XLDnaute Barbatruc
Re
Pour le point 2°on ne s est pas compris .
Il fallait comprendre de cellules ”vides” dans la colonne solde de tenue de compte et non ” code ” dans cellule ”solde de tenue de compte ”
Je ne comprends pas, pourquoi garder(sans la vider) la colonne G ? Mais bon !
Je regarde cela des que possible
(Transfert sans lignes avec zero dans solde de tenue de compte )
Bonne fin de journee
Jean marie
 

an@s

XLDnaute Occasionnel
Re,
il ne faut pas du tout vider la colonne G, pour ne pas écrire à nouveau les codes de cette colonne à chaque fois on fait l'importation des données de la feuille Balance. comme ça après chaque mise à jour des données on saisit dan sla colonne G que les codes des nouvelles lignes importées

Bonne fin de journée
An@s
 

Dranreb

XLDnaute Barbatruc
Sur quelle ligne quand vous allez en débogage ? Avez vous mis des espions pour vérifier les types de données des expressions impliquées ?
joignez donc le classeur où ça plante, parce que celui que j'avais joint en dernier ne plantait pas, lui, comme en témoigne Chti160, du moins avec les données de l'époque.
Avez vous mis tous les modules de service nécessaires ? La référence Microsoft Scripting Runtime est elles cochée ? (parce qu'une procédure du module MGigogne fabrique un Dictionary)
Je ne peux pas faire la mise au point à votre place si vous ne joignez pas les classeurs impliqués ni ne puis vous aider à la faire vous même si vous ne me donnez pas plus de précisions.
 
Dernière édition:

Discussions similaires

Réponses
12
Affichages
225

Statistiques des forums

Discussions
311 724
Messages
2 081 936
Membres
101 844
dernier inscrit
pktla