est ce que quand je modifie curX dans cette fonction ça modifie la valeur de curX de l'element qui a appelé la fonction o upas:

void ajouterEquipement(EntréeEquipements equipement, IPrsUnit newUnit, IPrsObject vue = null, int curX = 0, int curY = 0, int maxRowLength = 0)
{
	try
	{
		Console.WriteLine("\n new object: " + equipement.nomTagGtcDef);
		IPrsObject obj = null;
		try
		{
			obj = newUnit.ObjectsEx.AddEx(equipement.nomTagGtcDef);
		}
		catch (Exception e)
		{
			// ça veut dire qu'il existait déjà on va donc le reprendre
			foreach (IPrsObject objet in newUnit.ObjectsEx)
			{
				if (objet.Name == equipement.nomTagGtcDef)
				{
					obj = objet;
					break;
				}
			}
		}
		obj.ModuleName = equipement.getModuleName();
		obj.ClassName = equipement.getClassName();

		Console.WriteLine("moduleName: " + equipement.getModuleName());
		Console.WriteLine("classname: " + equipement.getClassName());

		foreach (String opcADesactiver in equipement.getOPCDesactives())
		{
			obj.Value[opcADesactiver, 0] = "";
		}

		Console.WriteLine("Propriétés modifiées:");
		// je parcours le dictionnaire String,String de equipement.getNewProps et j'affiche tout
		if (worksheetsProprietes != null)
		{

			Dictionary<String, String> newProps = equipement.getNewProps(worksheetsProprietes);

			foreach (KeyValuePair<String, String> entry in newProps)
			{
				if (entry.Key == "Info_API" && entry.Value != "#DEFAUT")
				{
					// on regarde si le unit contient un élément avec le className 'Information API' et le nom entry.Value
					Boolean infoAPIExiste = false;
					foreach (IPrsObject objet in newUnit.ObjectsEx)
					{
						if (objet.ClassName == "Info_API" && objet.Name == entry.Value)
						{
							infoAPIExiste = true;
							break;
						}
					}

					if (!infoAPIExiste)
					{
						IPrsObject infoAPI = newUnit.ObjectsEx.AddEx(entry.Value);
						infoAPI.ClassName = "Info_API";
						infoAPI.ModuleName = "Elementaires";

						infoAPI.Value["Channel", 0] = "A MODIFIER";
						String nomObjSrv = "";
						// on parcourt le unit de la racine (celui du site) et on regarde va prendre le Name
						// de l'objet avec comme className 'OPC' et comme moduleName Equipment

						foreach (IPrsObject obUnitParent in unitSite.ObjectsEx)
						{
							if (obUnitParent.ClassName == "OPC" && obUnitParent.ModuleName == "Equipment")
							{
								nomObjSrv = obUnitParent.Name;
								break;
							}
						}

						string valOPCAPI = "/" + nomSite + "/" + nomObjSrv;

						if (nomObjSrv == "")
						{
							valOPCAPI = "A CHANGER";
						}
						infoAPI.Value["OPC", 0] = valOPCAPI;
					}
				}
				Console.WriteLine("key: " + entry.Key + " value: " + entry.Value);
				if (entry.Value == "#DEFAUT")
				{
					LibrairieOutilsPanorama.resetPropriete(obj, entry.Key);
				}
				else
				{
					if (entry.Value.StartsWith("#NUM_"))
					{
						obj.Value[entry.Key, 0] = int.Parse(entry.Value.Substring(5));
					}
					if (entry.Value.StartsWith("#ENUM_"))
					{
						String value = entry.Value.Substring(6);

						if (entry.Key == "Unite")
						{
							Console.WriteLine("test");
						}

						if (value == "#DEFAUT")
						{
							LibrairieOutilsPanorama.resetPropriete(obj, entry.Key);
						}
						else
						{
							obj.Value[entry.Key, 0] = LibrairieOutilsPanorama.getEnumValue(value);
						}

					}
					else
					{
						obj.Value[entry.Key, 0] = entry.Value;
					}
				}
			}
		}
		IPrsObject vueIncrustee = vue.CollectionEx["EmbeddedViews"].AddEx("vue_" + equipement.nomTagGtcDef);
		// ça ne pose pas de pb si on modifie les propriétés avec ça
		// on arrive dans le except si on essaye de créer la vue incrustée si elle existe déjà
		// (donc si c'est déjà présent dans la vue on lui changera pas sa position)
		vueIncrustee.ModuleName = "CODRA_Synopt";
		vueIncrustee.ClassName = "EmbeddedViewHMI";
		vueIncrustee.Value["ReferenceViewName", 0] = equipement.getView();
		vueIncrustee.Value["KeepViewSize", 0] = true;
		vueIncrustee.Value["X", 0] = curX;
		vueIncrustee.Value["Y", 0] = curY;

		curX += 300;
		if (curX > maxRowLength)
		{
			curX = 0;
			curY += 300;
		}
	}
	catch (Exception exc)
	{
		// on a essaye d'ajouter un composant qui existe déjà, on touche à rien
		Console.WriteLine("Erreur lors de l'ajout de l'équipement : " + exc.Message);
	}
}