MAJ de données SQL
Bonjour à toutes et tous,
J'en appelle aux boss d'Excel car je n'arrive pas à comprendre et trouver une solution pour le problème suivant (en même temps, je ne suis pas expert en Excel):
1 Feuille excel sur laquelle se trouve dès la case A1 des données liées à une table SQL.
Colonne 1 = Code de commande
Colonne 2 = N° de ligne de la commande
Colonne 3 = Désignation article
...Etc....
J'ai ajouté une colonne supplémentaire à la fin appelée "commentaire" (par exemple) dans laquelle je viens ajouter des infos.
Chaque fois que je met à jour ma table liée à SQL, les commentaires que j'avais saisis en face de chaque commande se retrouvent en vrac, n'importe où, même plus en face de mes bonnes commandes.
Question: Comment solutionner cela svp ?
1000 mercis pour votre aide.
Salut,
Comment mets tu as jour ta table SQL ?
Tu mets à jour un tableau Excel déjà existant ?
C'est tu ce qui se passe durant la MaJ ?
Hello Kant1,
Merci de t'intéresser à mon problème.
J'ai créé ma feuille Excel en important dessus 3 colonnes issues de notre ERP.
Puis j'ai ajouté une 4° colonne ("commentaires") et j'ai saisis des infos relatives à chaque ligne.
Chaque jour ou chaque heure (peu importe), j'utilise le bouton "actualiser tout" d'Excel et les nouvelles données de l' ERP descendent dans cette table liée sur Excel (donc colonnes 1,2 et 3).
Le problème est que mes commentaires ne suivent pas les lignes et se retrouvent face aux nouvelles lignes descendues de l' ERP et non en face des anciennes lignes.
Voici un exemple de comportement (données purement inventées pour l'exemple)
Exemple avant MAJ: Exemple après MAJ:
Col1 Col2 Col3 Col4 "commentaires" Col1 Col2 Col3 Col4 "commentaires"
CC2 10 Tournevis Modèle Rouge CC3 2 Colle Modèle Rouge
CC1 3 Marteau Long manche CC2 10 Tournevis Long Manche
CC1 3 Marteau
Bonjour,
D'accord je comprend mieux ton problème.
Voila une proposition de code à intégrer dans la macro déjà existante.
Sans feuille de test je ne peux pas savoir si ça fonction.
Sub Commentaire()
Dim tablo() As String, ligne As Integer, i As Integer, dLigne As Integer, index As Integer
'---------------------------------A PLACER AU DEBUT POUR STOCKER LES ANCIENS COMMENTAIRES
dLigne = Range("A35000").End(xlUp).Row 'dans le cas ou la colonne A est la plus longue
ReDim tablo(Application.WorksheetFunction.CountA(Range("D1:D" & dLigne)), 4) 'redimensionné le tablo avec les bonnes dimmension
index = 0
For i = 1 To dLigne
If Cells(i, 4) <> "" Then
tablo(index, 0) = Cells(i, 1)
tablo(index, 1) = Cells(i, 2)
tablo(index, 2) = Cells(i, 3)
tablo(index, 3) = Cells(i, 4)
index = index + 1
End If
Next i
'-------------------------------------A PLACER A LA FIN POUR PLACER LES NOUVEAUX COMMENTAIRES
dLigne = Range("A35000").End(xlUp).Row
Range("D1:D" & dLigne).ClearContents
For index = 0 To UBound(tablo, 1) - 1
For i = 1 To dLigne
If Cells(i, 1) = tablo(index, 0) And Cells(i, 2) = tablo(index, 1) And Cells(i, 3) = tablo(index, 2) Then
Cells(i, 4) = tablo(index, 3)
Exit For
End If
Next i
Next index
End SubHello Kant1,
Merci pour ce code, je l'ai testé mais je ne comprends pas ce qu'il fait.
Je pensais qu'il y avait une manip simple sur Excel que je ne savais pas faire mais on dirait que ce problème nécessite du code.
J'avais volontairement pris un exemple simple de 3+1 colonnes pour simplifier l'exposition du problème mais vu qu'il y a du code, je pense en effet qu'il te faut le tableau sur lequel je travaille qui, en réalité, comporte beaucoup plus de colonnes.
Ci-joint le tableau avec des valeurs d'exemple et la config idéale, c'est à dire que le tableau lié ne démarre plus en A1 mais quelques colonnes plus loin (si c'est possible) car j'insère avant des colonnes perso que je remplis pour effectuer des calculs de rentabilité sur nos commandes.
Je dois m'absenter pour plusieurs jours donc il n'y a pas le feu si tu veux bien regarder ce problème à tête reposée car il est insoluble pour moi et mes quelques notions d'Excel.
J'espère que tu pourras reproduire et constater le problème sur ce tableau car le bouton "actualiser tout" d'Excel ne fonctionnera pas chez toi vu que le tableau lié appelle notre serveur.
En résumé, les colonnes A à L, c'est perso et dédié à de la saisie et du calcul (ce que j'appelais "commentaires" dans mon exemple précédent), les colonnes de M à AS (en bleu) sont issues du tableau lié via SQL avec des infos descendant de notre ERP après chaque actualisation.
Les lignes bleues se mettent à jour via le bouton "actualiser tout" d'Excel mais les autres lignes (blanches) ne suivent pas et restent figées d'où mon problème.
Dans mon tableau ci-joint, si j'actualise et qu'une commande supplémentaire est entrée ce matin dans mon ERP, alors en P3 tu verrais écrit "Exemple 19" et "Exemple 18" serait descendu en cellule P4. Malheureusement les cellules A3 jusqu'à L3 vont rester là où elles sont en ligne 3 au lieu de suivre leur référent qui est "Exemple18".
J'espère t'avoir éclairé un peu plus.
Encore 1000 mercis si tu peux trouver un peu de ton temps pour qu'une solution voit le jour.