Pages

Affichage des articles dont le libellé est lignes. Afficher tous les articles
Affichage des articles dont le libellé est lignes. Afficher tous les articles

[WD17] Comment gérer le calcul d'es lignes d'une table suite à changement de tarif. sujet

mardi 8 avril 2014




Bonjour à toutes et à tous,
Voilà j'ai un problème pour gérer les changements de tarif en cours d'année. En effet, j'ai une table qui calcul la consommation et le coût de l'électricité suite aux relevés mensuel d'index compteur.
Le calcul des coûts se fait par un fichier.fic rempli à l'aide d'une fenêtre.
Tout fonctionne parfaitement, sauf lors d'un changement de tarif, tout le tableau se re-calcul avec les nouveaux prix. J'aimerai que le calcul avec les derniers tarifs se fasse qu'à partir de la dernière ligne rentrée. Cela fait plusieurs jours que je galère avec ça, mais je ne trouve pas la solution.:ptdr:
Ci dessous un bout de code:

// CALCUL DES COUTS

// calcul de la taxe TCFE sur la consommation totale
m est un entier;
POUR m =1 _A_ TableOccurrence(TABLE_Consom)
TABLE_Consom[m].COL_TCFE_TTC=TABLE_Consom[m].COL_ConsoHp + TABLE_Consom[m].COL_ConsoHc + TABLE_Consom[m].COL_ConsoHpSsC + TABLE_Consom[m].COL_ConsoHcSsC
TABLE_Consom[m].COL_TCFE_TTC=TABLE_Consom[m].COL_TCFE_TTC*DonnéesTech.TCFE*DonnéesTech.TvaConso
FIN
// Calcul de la taxe CSPE sur la consommation totale
n est un entier;
POUR n = 1 _A_ TableOccurrence(TABLE_Consom)
TABLE_Consom[n].COL_CSPE_TTC=TABLE_Consom[n].COL_ConsoHp + TABLE_Consom[n].COL_ConsoHc + TABLE_Consom[n].COL_ConsoHpSsC + TABLE_Consom[n].COL_ConsoHcSsC
TABLE_Consom[n].COL_CSPE_TTC=TABLE_Consom[n].COL_CSPE_TTC*DonnéesTech.CSPE*DonnéesTech.TvaConso
FIN

// Calcul TTC de la consommation heure pleine
o est un entier;
POUR o = 1 _A_ TableOccurrence(TABLE_Consom)
TABLE_Consom[o].COL_CoûtHp_TTC=(TABLE_Consom[o].COL_ConsoHp + TABLE_Consom[o].COL_ConsoHpSsC)*(DonnéesTech.TarifHp)
TABLE_Consom[o].COL_CoûtHp_TTC=TABLE_Consom[o].COL_CoûtHp_TTC*(DonnéesTech.TvaConso)
FIN


Si quelqu'un peut me mettre sur la voie, se serait super sympa.
Merci par avance
Cordialement











Images attachées










XL 2007 Comptage de lignes selon critère sujet




Bonjour à tous,

Je dois importer des données dans une base et je passe par excel pour convertir celles-ci.

Pourriez-vous svp me dire comment faire pour arriver au comptage du nombre de lignes selon l'exemple ci-dessous :

Données Comptage
201401 0
201401 1
201401 2
201401 3
201401 4
201402 0
201402 1
201402 2
201403 0
201403 1
201404 0

Lorsqu'il rencontre une donnée avec un n° différent, il commence sa séquence à 0 puis, 1, 2, 3, ...

En vous remerciant d'avance pour votre aide.




XL 2010 suppression de lignes avec critère par vba sujet

vendredi 28 mars 2014




bonjour comment supprimer des lignes d'un onglet à partir d'un critère ?

sur mon fichier exemple je souhaite supprimer les lignes dont la valeur test est TSP.

Merci pour votre aide
Cdlt
philippe













Fichiers attachés








SELECT, INSERT et UPDATE sur un très grand nombre de lignes pour faire un classement sujet




Bonjour à tous,

je me pose certaines questions sur ma manière de procéder sur une problématique de classement à un QCM, voilà mon cas:

Je propose des QCM de 10 questions max avec entre 2 à 4 choix possibles, 1 seul des choix étant correct.
Les réponses des utilisateurs sont enregistrés sous la forme d'une chaine de caractères numériques où le numéro inscrit correspond à la radiobox coché (ex s'il coche que les 1ères radiobox de chaque question du QCM => 0000000....)

J'enregistre le tout sous la table suivante => membre_id mediumint(8), qcm_id smallint(4), reponse int(10)
où les champs membre_id, qcm_id sont des index et le couple membre_id,qcm_id est un index unique

(Noter que cette table peut devenir très volumineuse le nb d'utilisateur et de QCM augmentant)

Pour calculer le score des utilisateurs et leur classement, je compare leur réponse au résultat officiel (ex: $bonne_reponse='1234512345';)

Ma problématique est dans ma manière de faire, si celle ci me semble correcte quand il y a peu d'utilisateurs,
je me demande si ce serait toujours le cas, s'il devait y en avoir beaucoup plus (potentiellement des centaine de milliers) (soyons optimistes)

Je procède ainsi, ce sera plus facile à comprendre:


Code:


1
2
3
4

$a=strlen($bonne_reponse); // le nb de caractères de la bonne réponse correspondant au nombre de questions du QCM
$quoi=array(); // ici sera inséré le score des utilisateurs
$zql=array();


1) je sélectionne les réponses de tous les membres ayant répondu au questionnaire en une seule requête:


Code:


1
2
3
4

$sql='SELECT membre_id,reponse FROM ma_table WHERE qcm_id='.$value;
$result=mysql_query($sql) or die('Echec 1');
$num=mysql_num_rows($result);


la table ma_table est là où sont enregistrées toutes les réponses des membres aux différents qcm


2) je calcule pour chaque ligne retourné, donc chaque membre, son score en comparant sa réponse à la bonne réponse (je schématise):


Code:


1
2
3
4
5
6

while ($Res = mysql_fetch_row($result) ){
$k=0;
for($i=0;$i<$a;$i++)if($bonne_reponse[$i]==$Res[1][$i])$k++;
$quoi[$Res[0]]=$k; // le score de l'utilisateur membre_id=$Res[0] vaut $k
}


Notez que l'array quoi (ainsi que ci après l'array zql) pourrait avoir des centaines de millers d'entrée, y aura -t-il une problématique à cela ?

3) pour faire le classement je trie par ordre décroissant le tableau des scores en conservant les clés = id des membres


Code:


1
2
3
4
5
	
arsort($quoi);
foreach ($quoi as $key => $val) {
$zql[]='('.$key.','.($val*10).')'; // $key représente membre_id et $val son score (ici dans l'ordre décroissant)
}


4) Après avoir préalablement créé une table spécifique à ce questionnaire-là (donc vide), j'y insère dans l'ordre voulu les membres_id et leur score


Code:


1
2
3
	
$sql2='INSERT INTO qcm_'.$value.' (membre_id,score) VALUES '.implode(',',$zql);
$result2=mysql_query($sql2) or die('Echec 2');


Question => la requête INSERT multiple est-elle efficace pour des centaines de miliers de lignes à insérer ?

La table specifique serait ainsi faite => id (auto_increment), membre_id (index unique), score // ainsi en lisant l'id du membre, on a son classement

5) Enfin, je dois incrémenter le score total de chaque utilisateur sur une table_score existante, malheureusement je crois être obligé de passé par une boucle:


Code:


1
2
3
4
5
6

for($j=0;$j<$num;$j++){

$sql3="UPDATE table_score SET score=score+".$zql[$j][1]." WHERE membre_id='".$zql[$j][0]."'";
$result3=mysql_query($sql3) or die('Echec 3');
}


Bref, voilà donc comment je compte procéder, je n'ai finalement que 2 requêtes toutes simples mais pouvant porter sur un très grand nombre de lignes,
ainsi qu'une 3ème requête Update toute aussi simple mais répétée potentiellement un très grand nombre de fois

Voyez-vous des moyens d'améliorer tout cela, voyez-vous des erreurs ou des améliorations que je pourrais porter à ce script ?
Pour faire court, vos avis, critiques et conseils seront la bienvenue

PS: ce script sera executé en tâche cron pendant la nuit vers les 3h du mat', l'idéal est biensur qu'il dure le moins longtemps possible,
mais si vous pensez qu'il durerea un temps raisonnable sur le serveur dédié suivant http://www.soyoustart.com/fr/offres/sys-e32-1.xml , cela me conviendra

D'ailleurs si vous pourriez me conseillé des modif à effectuer du côté de mysql je suis preneur aussi

Merci d'avance
A bientôt




Ajouter des lignes aux collections de collections sujet




Bonjour,

j'ai dans une application codée comme suite :


Code:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70

Public Class Variables
Public BOM As New List(Of Component) 'BOM finale
End Class

Public Class TraversAllComponents
BOM.Add(New Component)
ID += 1

BOM.Item(ID).Patch = BOM.Item(ID).swComponent.GetPathName 'chemin du composant

'==================
' Vérification si la configuration a déjà été traitée
Dim x As Integer = 0
If Not IsNothing(BOM.Item(ID).Configuration) Then
For Each Y As Configurations In BOM.Item(ID).Configuration

If BOM.Item(ID).Configuration.Item(x).Name = BOM.Item(ID).ConfigurationName Then
Exit For
ElseIf x = BOM.Item(ID).Configuration.Count - 1 Then
BOM.Item(ID).Configuration.Add(New Configurations() With {.Name = BOM.Item(ID).Patch})
End If

x += 1
Next
Else
BOM.Item(ID).Configuration.Add(New Configurations() With {.Name = BOM.Item(ID).Patch})
End If
'==================

End Class


Public Class Component

Private _Configuration As List(Of Configurations) 'Configuration du composant
Public Property Configuration() As List(Of Configurations)
Set(value As List(Of Configurations))
_Configuration = value
End Set
Get
Return _Configuration
End Get
End Property

Private _Path As String 'répertoire du composant
Public Property Patch() As String
Set(value As String)
_Path = value
End Set
Get
Return _Path
End Get
End Property

End Class

Public Class Configurations

Private _Name As String 'Nom de la configuration
Public Property Name As String
Set(value As String)
_Name = value
End Set
Get
Return _Name
End Get
End Property

End Class


Aux ligne 21 et 27, je tente de créer une nouvelle "Configuration" mais sans succès.
L'erreur "La référence d'objet n'est pas définie à une instance d'un objet." m'est renvoyée.
J'ai cherché partout sur le net le pourquoi du comment mais je n'arrive pas à comprendre d'où vient mon problème.
Et je n'arrive pas à comprendre pourquoi cela ne fonctionne pas alors que la ligne 7 ne pose aucun problème ( BOM.Add(New Component) )

Quelqu'un saurait-il d'où vient le soucis SVP?

Merci!




XL 2007 Macro pour parcourir des milliers de lignes sans ramer :p sujet




Bonjour à tous,

D'ou d'abord merci de me lire, vous allez probablement le regretter face à la complexité de ma demande donc je préfére commencer par cela :)

Je vous expose mon contexte :
Je reçois deux extracts par semaine de mon client, chacun contenant environ 20k de lignes. Sur un mois on est a plus de 80K, je vous laisse calculer sur un an.
J'ai besoin d'info présentes dans les deux extracts et donc de les combiner puis ensuite procéder à une série de calcul selon certains critères.

Mon désir :
J'aimerais pouvoir
- ouvrir les deux fichiers correspondant à mes extracts hebdo et les combiner dans un onglet semaine après semaine (cf fichier exemple afin de voir la structure des deux extracts. Les couleurs des données dans l'onglet combiné correspondent aux couleurs des onglets ou trouver les données).
- Indiquer dans le premier onglet quelles semaines ont déjà été extraites
- Faire une série de calcul en fonction de divers paramétres explicités dans le premier onglet.

J'ai apposé différents commentaires afin que vous compreniez au mieux la structure des fichiers extracts que je reçois.

Mon problème :
Vu le nombre de ligne j'ai testé par macro ou par recherche V et c'est interminable vu la quantité de données a traité.
Je suis débutant en VBA , peut-être que je m'y prend mal et du coup ma macro rame comme jamais, ou alors ce n'est tout simplement pas faisable vu la quantité de données à traiter...

J'attends vos conseils / avis / Proposition avec impatience !

Encore merci :)


Joker.













Fichiers attachés








[AC-2007] concaténer plusieurs lignes dans un champ sujet




Bonjour,


Je suppose que cette demande revient souvent mais je ne sais pas quels mots clefs je dois utiliser :-).

J'essaye de faire un truc et je vais tenter de vous l'expliquer....

J'ai une requête qui sort :

Code:


1
2
3
4
5
6
7
8
9

Entreprise Activité

Entreprise X Activité A
Entreprise X Activité B
Entreprise Y Activité A
Entreprise Y Activité C
Entreprise Y Activité D
.....


Je souhaiterais que le requête me retourne

Code:


1
2
3
4

Entreprise Activité
Entreprise X Activité A, Activité B
Entreprise Y Activité A, Activité C Activité D


D''avance, je vous remercie de vos pistes et de contribuer à étoffer mes compétences:-)

Bonne journée,
Roger




XMLOutputter qui supprime les passage a la lignes mais pas les tags uniquement blanc sujet




Bonjour

Est il possible avec JDOM d'avoir un XMLOUTPUTTER qui supprime les passages à la ligne, mais pas les tags avec des valeurs uniquement composé du caractère espace ?

Merci




XL 2010 Trouver la dernière valeur égale dans les lignes précédentes sujet

jeudi 27 mars 2014




Bonjour,

Je cherche à trouver la ligne la plus proche au dessus de la cellule active qui correspond à ma condition. Pour être plus clair et plus concret, j'ai la liste des composants d'une structure avec leur niveau dans la structure et je cherche à identifier le père de chaque élément. En pièce un petit exemple plus parlant que des mots.

J'ai essayé d'utiliser la fonction EQUIV (dans la colonne "Ma tentative") mais elle renvoie la première valeur qui correspond à la condition alors que j'ai besoin de la dernière valeur qui correspond à la condition ET qui se trouve avant la ligne où je suis.

Merci d'avance pour vos suggestions.













Fichiers attachés








XL 2010 Classement de lignes ENTIERES suivant valeur d'une colonne sujet




Bonjour le forum,


Une fois de plus, mes maigres connaissances m'obligent à en faire appel à votre expertise.
Mon besoin:

J'ai un tableau Excel (celui de l'exemple est raccourci) sur lequel je souhaite trier chaque ligne en fonction de sa valeur en colonne D (VARIABLE 3).
Ce classement doit au final me rapporter les lignes ordonnées avec la valeur en colonne D du plus petit au plus grand.

J'avais réussi à faire un classement sur la colonne MAIS ce classement se dissociait alors des colonnes A B C. Donc, plus d'intérêt !

Ci après, mon exemple.

Merci d'avance pour votre aide.

@+













Fichiers attachés








mélanger les lignes d'une feuille à l'ouverture d'un document? sujet

samedi 1 février 2014




Bonjour à tous,


Voici ma question: je souhaiterais savoir, s'il existe une fonctionnalité, ou une macro d'excel, permettant, à l'ouverture de mon document, de mélanger les lignes de ma feuille? Mettons que j'ai une série de code postaux, un par ligne, je souhaiterais qu'à chaque fermeture et réouverture du document, ces différentes lignes soient dans un ordre de classement différent. Cela est-il possible selon vous? Peut être une fonction random, je ne sais pas si cela existe.

Si éventuellement la solution vous paraît jouable d'une autre façon, via Word, bloc notes, HTML... Je suis preneur !!

Merci à vous!




[10g] Trigger : sauvegarder les lignes d'une table dans un fichier texte après une mise à jour sujet




J'ai écrit un trigger qui suite à une modif devrait enregistrer toutes les lignes d'une table dans un fichier texte.

Code:


create or replace trigger trig_cli
  after update of nom on client for each row
   
        declare

        v_filehandle utl_file.file_type;
cursor cli Is
        select * from client;
        begin
                         
        v_filehandle :=utl_file.fopen('MY_DOCS','j2ee.txt','w');--Opening a file
           
        for v_cli_rec IN cli LOOP
         
            utl_file.putf(v_filehandle,'clients %s : %s\n',v_cli_rec.nom,v_cli_rec.prenom);                   
        end loop;
     
        UTL_FILE.fclose(v_filehandle);
               
    end trig_cli;


Le trigger est crée correctement.
Quand, je fais une maj de la table j'obtiens l'erreur suivante :

ORA-04091: la table MYDB.CLIENT est en mutation ; le déclencheur ou la fonction ne peut la voir
ORA-06512: à "MYDB.TRIG_CLI", ligne 5
ORA-06512: à "MYDB.TRIG_CLI", ligne 12
ORA-04088: erreur lors d'exécution du déclencheur 'MYDB.TRIG_CLI'

Y'a-t-il un moyen de corriger cette erreur ou d'exporter la table autrement pour éviter le problème de table en mutation?

Merci




comment creer des lignes temporaires sujet

vendredi 31 janvier 2014




Bonjour à tous,

je ne sais pas s'il ya un moyen pour créer des enregistrements temporaires, je m'explique. j'ai un état d'impression d'une facture, mais pour faire jolie la facture doit tenir sur toute la longueur de la page, chose que je ne peut pas faire dans le cas d'une facture avec 1 ou 2 lignes par exple.

merci




Sélectionner les lignes qui ont la valeur maximale dans une certaine colonne sujet

jeudi 30 janvier 2014




Bonjour à tous,

J'ai une requête assez complexe (ci-après nommée ma_requete_qui_fait_plein_de_trucs qui rapatrie tout un tas de données et dont je souhaiterais ne récupérer que les lignes qui ont la valeur maximale d'une certaine colonne. C'est-à-dire, j'ai des données de ce genre là :

Code:


SELECT Valeur, Colonne1, Colonne2, ..., ColonneN
FROM ma_requete_qui_fait_plein_de_trucs


... et je voudrais ne garder que les lignes qui ont dans la colonne Valeur la valeur maximale de toute la colonne.

Une façon de faire ça serait :

Code:


SELECT Valeur, Colonne1, Colonne2, ..., ColonneN
FROM ma_requete_qui_fait_plein_de_trucs
WHERE Valeur = (SELECT MAX(Valeur) FROM ma_requete_qui_fait_plein_de_trucs)


Mais cette méthode implique d'exécuter deux fois ma_requete_qui_fait_plein_de_trucs, ce qui n'est ni très économe, ni très ergonomique dans le code.

N'ayant que des droits très limités sur la base de données, je ne peux pas créer de vue ou ce genre de chose (ou plus exactement je peux en créer, mais on nous l'a interdit... (fichus décideurs :x)).
J'ai du mal à croire que cette sélection de ligne ne soit pas possible par le biais d'une astuce SQL, mais je n'arrive pas à trouver comment faire.

La colonne Valeur contient des entiers positifs. La base de données est gérée par Oracle (je ne saurais pas dire quelle version).

Merci par avance de votre aide !




XL 2010 Fusion de lignes si doublon de certaines colonnes sujet




Bonjour à tous,

J'ai bien cherché sur tout le forum et malgré une profusion de fils très intéressants je n'arrive pas à trouver mon bonheur. Je me lance donc en tant que nouveau, d'autant qu'à priori la solution est une macro et je n'y connais rien!

J'ai sur une feuille une liste de données correspondant à un portefeuille de brevets.
Ce tableau est issue d'un export d'un logiciel spécifique.
Chaque ligne correspond à un brevet.
Le problème c'est que dans ce tableau il existe de nombreux doublons avec une seule modification: le numéro de brevet.
En effet, chaque pays protégé pour une même invention aura une référence différente.
Ces doublons sont identifiables via leur numéro de priorité identique ou la référence.

Je souhaiterai fusionner ces doublons et "concaténer" la variable (numéro de brevet) dans une même cellule avec une séparation par point virgule afin d'utiliser ce tableau dans un outil de cartographie. Il ne devrait alors y avoir plus qu'une ligne correspondant à une invention.

Le fil le plus proche me semble être celui-ci.
Mais les variables sont dans des colonnes distinctes alors quelles sont dans la même dans mon cas. De plus le résultats doit nécessairement être comme dans l'exemple pour que je puisse l'analyser par la suite.
Evidemment mon tableau a un petit millier de lignes ;)

Ci-dessous un fichier explicatif.

Merci d'avance aux généreux!













Fichiers attachés








Lire fichier, sauter des lignes hors format sujet




Bonjour,

J'essaye de lire un fichier .csv.

Le format de ligne est simple :


Code:


13/02/12 00:00:37,43,234

Seulement il arrive qu'à certaines lignes on trouve (qui soit dit en passant aurait pu être mis dans le Header..):


Code:


***GPS time adjust at -7627772 110460096

et ça fait planter tout mon code de lecture.

Auriez vous une idée pour ignorer ce genre de ligne dans la lecture du fichier?

Merci d'avance.




[XL-2007] AJOUTER DES LIGNES A UNE LISTBOX sujet

mercredi 29 janvier 2014




Bonsoir,

Je réalise un programme dans lequel je suis amené à compléter une listbox à la demande de l'utilisateur. Vous trouverez ci dessous une version d'essai correspondant à mon besoin. Il me sert à tester le fonctionnement de ce morceaux pour lequel je "pêche":?:?

J'ai un formulaire Userform1 avec une listbox et 3 boutons : 1 bouton remplir la listbox (en automatique à l'ouverture sur mon programme), 1 bouton ajout d'une ligne qui ouvre un autre userform, 1 bouton qui renvoie toutes les données de la listbox vers une feuille excel.

ci dessous le code :

Code:


Private Sub CommandButton1_Click()

'charge le contenu de la listbox list

UserForm1.list.RowSource = "f1!a2:b7"

End Sub

Private Sub CommandButton2_Click()

'charge le form 2 pour ajout et ajoute une liste à la listbox list2

Load UserForm2
UserForm2.List2.RowSource = "f2!a2:b7"
UserForm2.Show

End Sub

Private Sub CommandButton3_Click()

'copier le contenu de listbox list dans la feuille excel f1

Sheets("f1").Range("d2").Resize(UserForm1.list.ListCount, 2) = UserForm1.list.list()
Unload UserForm1

End Sub


Mon problème réside dans le second formulaire userform2 dans lequel se trouve une listbox list2 dans le quel l'utilisateur coche une case suite réglage de la propriété liststyle à fmListStyleOption. L'utilisateur coche une ou plusieurs lignes et clique sur un bouton commandbutton permet de valider son choix et normalement ajouter cette ou ces ligne(s) dans la listbox list1 dans Userform1.

J'obtient le message suivant dans la configuration actuelle : erreur d'éxécution 70, accés refusé.
J'ai essayé plusieurs formes sans succès et j'ai eu des messages différents mais jamais un résultat.
Ci dessous le code :

Code:


Private Sub CommandButton1_Click()

MsgBox UserForm2.List2.Value
UserForm1.list.SetFocus
UserForm1.list.AddItem UserForm2.List2.Value

Unload UserForm2

End Sub


Merci encore pour votre aide précieuse




Calculer le nombre total de lignes avec un distinct sujet




Bonjour,

J'ai une base contenant des logs d'utilisateurs.
chaque jour, des utilisateurs se loguent sur mon site et j'enregistre leur référence et la date.

Je souhaiterais sortir une liste de tous les utilisateurs distinct, avec une colonne en face me disant combien de fois ils se sont connectés dans le mois par exemple.

Par exemple :

ma base brute :

Code:


ref  |  date
001  |  01/01/2014
002  |  01/01/2014
003  |  01/01/2014
001  |  02/01/2014
001  |  02/01/2014
003  |  04/01/2014


Je voudrais sortir ceci (nombre de logs pour chaque user + order by nombre de logs) :

Code:


ref  |  nombre de logs
001  |  3
003  |  2
002  |  1


Est-ce possible de faire ça ? ça fait un moment que je chercher sur le net sans comprendre comment faire cela. Je ne sais même pas si c'est possible...
Pouvez-vous m'aider s'il vous plait ?
Merci par avance.




probleme d'affichage des lignes d'une requette sql sous crystal report sujet




Bonjour tous le monde ,
Je suis en train de construire une application de gestion d'étudiant . La bd est sql serveur 2008. Il se trouve que lorsque je teste la requette sous sql server j'arrive à voir toutes les lignes. Mais arrivé au niveau de l'impression avec crystal report une seule ligne s'affiche .
J'ai tout tenté mais en vin .




créer des Colonnes à partir des lignes sujet




bonjour à tous ,
je rencontre un petit soucis sur cette longue requête..

j'ai besoin de créer des colonnes à partir des lignes d'un tableau (boucle)... le principe décrit dans ce code ci-dessous marche mais pour la première incrémentation seulement ... j'arrive pas à trouver le pb avec la boucle ... sachant que le message d'erreur indique ceci :

" Niveau*15, État*1, Ligne*1
Il y a plus de colonnes dans l'instruction INSERT que de valeurs spécifiées dans la clause VALUES. Le nombre de valeurs de la clause VALUES doit être le même que le nombre de colonnes de l'instruction INSERT.
Msg*109, Niveau*15, État*1, Ligne*1
Il y a plus de colonnes dans l'instruction INSERT que de valeurs spécifiées dans la clause VALUES. Le nombre de valeurs de la clause VALUES doit être le même que le nombre de colonnes de l'instruction INSERT.
Msg*109, Niveau*15, État*1, Ligne*1
Il y a plus de colonnes dans l'instruction INSERT que de valeurs spécifiées dans la clause VALUES. Le nombre de valeurs de la clause VALUES doit être le même que le nombre de colonnes de l'instruction INSERT.

(0*ligne(s) affectée(s))"""""""


voila la requête :

/*déclaration d'une table temporaire*/
create table tempo(
sContact_vo_email nvarchar(255),tsLastModif datetime,
iCounty_vo_1 varchar,iCounty_vo_2 varchar/*,iCounty_vo_3 varchar,iCounty_vo_4 varchar,iCounty_vo_5 varchar,iCounty_vo_6 varchar,iCounty_vo_7 varchar,iCounty_vo_8 varchar,iCounty_vo_9 varchar*/,
iMileage_vo_1 varchar,iMileage_vo_2 varchar/*,iMileage_vo_3 varchar,iMileage_vo_4 varchar,iMileage_vo_5 varchar,iMileage_vo_6 varchar,iMileage_vo_7 varchar,iMileage_vo_8 varchar,iMileage_vo_9 varchar*/,
tsCreation datetime,
iPrice_vo_1 int,iPrice_vo_2 int/*,iPrice_vo_3 int,iPrice_vo_4 int,iPrice_vo_5 int,iPrice_vo_6 int,iPrice_vo_7 int,iPrice_vo_8 int,iPrice_vo_9 int*/,
iModel_year_vo_1 int,iModel_year_vo_2 int/*,iModel_year_vo_3 int,iModel_year_vo_4 int,iModel_year_vo_5 int,iModel_year_vo_6 int,iModel_year_vo_7 int,iModel_year_vo_8 int,iModel_year_vo_9 int*/,
sBrand_vo_1 nvarchar(255), sBrand_vo_2 nvarchar(255)/*,sBrand_vo_3 nvarchar(255),sBrand_vo_4 nvarchar(255),sBrand_vo_5 nvarchar(255),sBrand_vo_6 nvarchar(255),sBrand_vo_7 nvarchar(255),sBrand_vo_8 nvarchar(255),sBrand_vo_9 nvarchar(255)*/,
sDetail_url_vo_1 nvarchar(255),sDetail_url_vo_2 nvarchar(255)/*,sDetail_url_vo_3 nvarchar(255),sDetail_url_vo_4 nvarchar(255),sDetail_url_vo_5 nvarchar(255),sDetail_url_vo_6 nvarchar(255),sDetail_url_vo_7 nvarchar(255),sDetail_url_vo_8 nvarchar(255),sDetail_url_vo_9 nvarchar(255)*/,
sModel_name_vo_1 nvarchar(255),sModel_name_vo_2 nvarchar(255)/*,sModel_name_vo_3 nvarchar(255),sModel_name_vo_4 nvarchar(255),sModel_name_vo_5 nvarchar(255),sModel_name_vo_6 nvarchar(255),sModel_name_vo_7 nvarchar(255),sModel_name_vo_8 nvarchar(255),sModel_name_vo_9 nvarchar(255)*/,
sThumbnail_url_vo_1 nvarchar(255),sThumbnail_url_vo_2 nvarchar(255)/*,sThumbnail_url_vo_3 nvarchar(255),sThumbnail_url_vo_4 nvarchar(255),sThumbnail_url_vo_5 nvarchar(255),sThumbnail_url_vo_6 nvarchar(255),sThumbnail_url_vo_7 nvarchar(255),sThumbnail_url_vo_8 nvarchar(255),sThumbnail_url_vo_9 nvarchar(255)*/,
sUnsubscribe_url_vo_1 datetime,sUnsubscribe_url_vo_2 datetime/*,sUnsubscribe_url_vo_3 datetime,sUnsubscribe_url_vo_4 datetime,sUnsubscribe_url_vo_5 datetime,sUnsubscribe_url_vo_6 datetime,sUnsubscribe_url_vo_7 datetime,sUnsubscribe_url_vo_8 datetime,sUnsubscribe_url_vo_9 datetime*/,
tsDate_vo datetime,
sAlert_name_vo_1 nvarchar(255),sAlert_name_vo_2 nvarchar(255),/*pour tester si on doit le faire sortir de la boucle si tout marche , sAlert_name_vo_2 nvarchar(255),sAlert_name_vo_3 nvarchar(255),sAlert_name_vo_4 nvarchar(255),sAlert_name_vo_5 nvarchar(255),sAlert_name_vo_6 nvarchar(255),sAlert_name_vo_7 nvarchar(255),sAlert_name_vo_8 nvarchar(255),sAlert_name_vo_9 nvarchar(255)*/
)
/*
insert into tempo
select TA.sContact_vo_email, TA.tsLastModif, TA.tsCreation,
TB.iPrice_vo, TB.iModel_year_vo, TB.sBrand_vo, TB.sDetail_url_vo, TB.sModel_name_vo,
TB.sThumbnail_url_vo, TB.sUnsubscribe_url_vo, TB.tsDate_vo, TB.sAlert_name_vo
From neolane.BmwContact_vo2 TA
LEFT OUTER JOIN neolane.BmwAlert_vo2 TB on TA.sContact_vo_email=TB.sContact_email_vo
*/
/*déclarartion des variables*/
declare @iCounty_vo varchar(255),
@iMileage_vo varchar(255),
@iModel_year_vo varchar(255),
@iPrice_vo varchar(255)

declare @sBrand_vo varchar(255),
@sDetail_url_vo varchar(255),
@sModel_name_vo varchar(255),
@sThumbnail_url_vo varchar(255),
@sUnsubscribe_url_vo varchar(255),
@sAlert_name_vo varchar(50)


declare @pivot varchar(200),
@sum varchar(200),
@sql nvarchar(1000),
@col varchar(255),
@sql_part1 varchar(4000),
@sql_part2 varchar(4000),
@compteur int

select @pivot='', @sum=''

/*selectionner les mails des personnes */
declare c cursor
for select distinct sContact_vo_email
from neolane.BmwContact_vo2
order by sContact_vo_email

open c
fetch c into @col
while @@FETCH_STATUS = 0
begin
/*deux partie de chaines la première pour la commande et la deuxième pour les serie de données*/
set @sql_part1 = 'insert tempo(sContact_vo_email '
set @sql_part2 = ' Values(''' + @col + ''','''


/*récupération des alertes par email*/
declare cAlert cursor for select iCounty_vo,iMileage_vo,iModel_year_vo,iPrice_vo,
sBrand_vo,sDetail_url_vo,sModel_name_vo,sThumbnail_url_vo,sUnsubscribe_url_vo,sAlert_name_vo
from neolane.BmwAlert_vo2
where sContact_email_vo = @col

/* ajout des infos de chaque alerte dans la table temporaire*/
open cAlert
fetch cAlert into @iCounty_vo,@iMileage_vo,@iModel_year_vo,@iPrice_vo,
@sBrand_vo,@sDetail_url_vo,@sModel_name_vo,@sThumbnail_url_vo,@sUnsubscribe_url_vo,@sAlert_name_vo

set @compteur = 1
while (@@FETCH_STATUS = 0 and @compteur <3)
begin


set @sql_part1 = @sql_part1 + ',iCounty_vo_' + convert(varchar,@compteur)
+ ',iMileage_vo_' + convert(varchar,@compteur)
+ ',iModel_year_vo_' + convert(varchar,@compteur)
+ ',iPrice_vo_' + convert(varchar,@compteur)
+ ',sBrand_vo_' + convert(varchar,@compteur)
+ ',sDetail_url_vo_' + convert(varchar,@compteur)
+',sModel_name_vo_' + convert(varchar,@compteur)
+',sThumbnail_url_vo_' + convert(varchar,@compteur)
+',sUnsubscribe_url_vo_'+ convert(varchar,@compteur)
+',sAlert_name_vo_' + convert(varchar,@compteur)


set @sql_part2 = @sql_part2 + isnull(@iCounty_vo,'') + ''',''' + isnull(@iMileage_vo,'') + ''',''' + isnull(@iModel_year_vo,'') + ''',''' + isnull(@iPrice_vo,'') + ''','''+ isnull(@sBrand_vo,'') + ''',''' + isnull(@sDetail_url_vo,'') + ''',''' + isnull(@sModel_name_vo,'') + ''',''' + isnull(@sThumbnail_url_vo,'') + ''',''' + isnull(@sUnsubscribe_url_vo,'') + ''',''' + isnull(@sAlert_name_vo,'')


fetch cAlert into @iCounty_vo,@iMileage_vo,@iModel_year_vo,@iPrice_vo,
@sBrand_vo,@sDetail_url_vo,@sModel_name_vo,@sThumbnail_url_vo,@sUnsubscribe_url_vo,@sAlert_name_vo
set @compteur = @compteur + 1


end

close cAlert
deallocate cAlert

/* avant exécution fermer les parenthèses*/
set @sql_part1 = @sql_part1 + ')'
set @sql_part2= @sql_part2 +',sAlert_name_vo_' + convert(varchar,@compteur)+ ''')'

exec (@sql_part1 + ' ' + @sql_part2)


fetch c into @col
end
close c
deallocate c


select * from tempo
drop table tempo