Pb pour prendre en consideration une ligne
Fermé
I<a55I<e77
Messages postés
2
Date d'inscription
mercredi 19 mars 2014
Statut
Membre
Dernière intervention
20 mars 2014
-
Modifié par pijaku le 28/03/2014 à 07:49
I<a55I<e77 - 27 mars 2014 à 18:50
I<a55I<e77 - 27 mars 2014 à 18:50
A voir également:
- Pb pour prendre en consideration une ligne
- Partager photos en ligne - Guide
- Site de vente en ligne particulier - Guide
- Aller à la ligne excel - Guide
- Prendre une photo avec son mac - Guide
- Prendre une photo avec son pc - Guide
7 réponses
commentcamarcheeay
Messages postés
667
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
30 mars 2020
86
19 mars 2014 à 16:37
19 mars 2014 à 16:37
Bonjour,
Si j'ai bien compris, tu veux que le résultat soit sur les cellules E et K de la même ligne.
Dans ton code, tu sauvegardes le numéro de la ligne, mais il y a une erreur de syntaxe sur la commande qui l'utilise.
Je te suggère cette correction :
Amicalement,
Si j'ai bien compris, tu veux que le résultat soit sur les cellules E et K de la même ligne.
Dans ton code, tu sauvegardes le numéro de la ligne, mais il y a une erreur de syntaxe sur la commande qui l'utilise.
Je te suggère cette correction :
k = ActiveCell.Row
range("Changement_de_spectacle!E" & k) = resultat2.Value
Amicalement,
merci d'avoir répondu,
mais ton analyse n'est pas bonne, je veux inscrire le résultat dans la colonne E et sur la ligne N° (k) - k étant la valeur de Activecell.row
de plus, j'ai essayé cette syntaxe, ça ne marche pas!
je ne sais comment faire, sûrement qu'il existe quelque chose de très simple mais je ne vois pas !
De l'aide !
merci
mais ton analyse n'est pas bonne, je veux inscrire le résultat dans la colonne E et sur la ligne N° (k) - k étant la valeur de Activecell.row
de plus, j'ai essayé cette syntaxe, ça ne marche pas!
je ne sais comment faire, sûrement qu'il existe quelque chose de très simple mais je ne vois pas !
De l'aide !
merci
I<a55I<e77
Messages postés
2
Date d'inscription
mercredi 19 mars 2014
Statut
Membre
Dernière intervention
20 mars 2014
20 mars 2014 à 13:50
20 mars 2014 à 13:50
bonjour,
ni .value , ni .value2 ne fonctionne! En même temps je suis sous vba 2003, alors peut être que tout ne fonctionne pas !
ni .value , ni .value2 ne fonctionne! En même temps je suis sous vba 2003, alors peut être que tout ne fonctionne pas !
commentcamarcheeay
Messages postés
667
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
30 mars 2020
86
20 mars 2014 à 14:32
20 mars 2014 à 14:32
Dans ce cas, si vous me donnez une copie de votre fichier, on pourra bien bricoler quelque chose.
(Ce site ... te permettra de déposer un fichier)
(Ce site ... te permettra de déposer un fichier)
commentcamarcheeay
Messages postés
667
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
30 mars 2020
86
25 mars 2014 à 20:35
25 mars 2014 à 20:35
Bonjour,
Le problème n'est pas dans le membre de gauche, mais dans celui de droite.
Il y avait une erreur de syntaxe. Il faut écrire :
Dans tous les cas, il faut forcer la sélection du dernier élément de la liste dans le bouton qui écrit le texte ( Private Sub Assemblage_Click() )
Je vous conseille de passer ce genre de valeurs par des variables globales plutôt que par les valeurs des objets. Je préfère définir une variable dans le module de la fenêtre concernée (transfert). Dans le code, au moment où vous remplissez votre liste, mettez ce que vous voulez afficher sur le formulaire dans cette variable.
Amicalement,
Le problème n'est pas dans le membre de gauche, mais dans celui de droite.
Il y avait une erreur de syntaxe. Il faut écrire :
Range("Changement_de_spectacle!E" & k).Value = resultat2.Valueresultat2.Value n'est égale à une valeur non nulle que si l'élément est sélectionné dans la liste. Je me demande pourquoi vous n'avez pas utilisé un simple TextBox pour cela.
Dans tous les cas, il faut forcer la sélection du dernier élément de la liste dans le bouton qui écrit le texte ( Private Sub Assemblage_Click() )
resultat2.AddItem str_ass
resultat2.ListIndex = resultat2.ListCount - 1
Je vous conseille de passer ce genre de valeurs par des variables globales plutôt que par les valeurs des objets. Je préfère définir une variable dans le module de la fenêtre concernée (transfert). Dans le code, au moment où vous remplissez votre liste, mettez ce que vous voulez afficher sur le formulaire dans cette variable.
ma_variable_globale = str_ass
resultat2.AddItem str_ass
Amicalement,
bonsoir,
je vous l'ai dit je suis novice et autodidacte sous vba
j'essaye des formules, je les bidouilles à ma sauce et ça marche ... ou pas !
je vous remercie pour l'aide , j'essaye les changements demain, je vous tiens au courant.
il y a autres choses qui ne marche pas et je ne sais pourquoi car la formule a déjà été utilisée, c'est dans l'userform Equiper.
Si vous pouviez trouver d'où vient le problème!
merci
amicalement,
je vous l'ai dit je suis novice et autodidacte sous vba
j'essaye des formules, je les bidouilles à ma sauce et ça marche ... ou pas !
je vous remercie pour l'aide , j'essaye les changements demain, je vous tiens au courant.
il y a autres choses qui ne marche pas et je ne sais pourquoi car la formule a déjà été utilisée, c'est dans l'userform Equiper.
Si vous pouviez trouver d'où vient le problème!
merci
amicalement,
commentcamarcheeay
Messages postés
667
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
30 mars 2020
86
Modifié par commentcamarcheeay le 26/03/2014 à 17:52
Modifié par commentcamarcheeay le 26/03/2014 à 17:52
Cela est la correction de la syntaxe. Mais comme j'ai expliqué, il faut sélectionner le texte inscrit dans la liste.
Par exemple, vous pouvez ajouter avant ce que j'ai proposé, à savoir :
P.S. J'enverrai bientôt le fichier corrigé.
Par exemple, vous pouvez ajouter avant ce que j'ai proposé, à savoir :
resultat2.ListIndex = resultat2.ListCount - 1Sinon, resultat2.Value sera vide.
Range("Changement_de_spectacle!E" & k).Value = resultat2.Value
P.S. J'enverrai bientôt le fichier corrigé.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
commentcamarcheeay
Messages postés
667
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
30 mars 2020
86
26 mars 2014 à 19:26
26 mars 2014 à 19:26
Bonjour,
Voici le fichier contenant les corrections ...
Il y avait un problème sur deux formulaires :
1. Formulaire "transfert"
Vous utilisiez
Le problème c'est que
J'ai remplacé cela en ajoutant une variable globale :
Dans le code du bouton qui affecte une nouvelle valeur dans une liste, je met dans cette variable ce que je souhaite voir sur ma cellule
Quant au bouton qui envoi le résultat de l'opération à la cellule, j'utilise la valeur de la variable globale plutôt que le texte écrit dans la liste :
Une autre manière de faire cela si vous ne voulez pas créer de variable globale :
2. Formulaire "Equiper"
Là, vous utilisiez une manière facilitée pour récupérer les valeurs du texte de vos contrôles afin d'en créer un bilan à afficher sur une cellule :
Le problème ici c'est que dans le formulaire, il n'y a pas que des CheckBox.
Pour corriger cela, je propose de vérifier le type du contrôle avant de demander la valeur de la propriété
3. Remarques
Comme vous êtes en train de travailler sur une grande application et que vous utilisez pleins de formulaires, je vous conseille de dissocier ce qui est affichage et ce qui est donnée. Bien qu'il est plus facile d'utiliser directement les textes des contrôles, il est préférable de mettre les données dans des variables que vous n'affichez pas forcément.
ça peut allez pour cette application, mais penser à ce points si jamais vous travaillez sur de plus grands projets.
Amicalement!
Voici le fichier contenant les corrections ...
Il y avait un problème sur deux formulaires :
1. Formulaire "transfert"
Vous utilisiez
Range("Changement_de_spectacle!E" & k).Value = resultat2.Valuepour écrire la valeur de la liste résultat 2 dans une cellule.
Le problème c'est que
resultat2.Valuene prend uniquement la valeur de l'élément sélectionné, alors que quand vous faites remplir votre liste, vous n'indiquer pas dans votre code quel élément sélectionner.
J'ai remplacé cela en ajoutant une variable globale :
Dim gValueToWriteInSheet As String
Dans le code du bouton qui affecte une nouvelle valeur dans une liste, je met dans cette variable ce que je souhaite voir sur ma cellule
gValueToWriteInSheet = str_ass resultat2.AddItem str_ass
Quant au bouton qui envoi le résultat de l'opération à la cellule, j'utilise la valeur de la variable globale plutôt que le texte écrit dans la liste :
Range("Changement_de_spectacle!E" & k).Value = gValueToWriteInSheet
Une autre manière de faire cela si vous ne voulez pas créer de variable globale :
Range("Changement_de_spectacle!E" & k).Value = resultat2.list(resultat2.listCount - 1)
resultat2.list(resultat2.listCount - 1)renvoi le texte du dernier élément de la liste.
2. Formulaire "Equiper"
Là, vous utilisiez une manière facilitée pour récupérer les valeurs du texte de vos contrôles afin d'en créer un bilan à afficher sur une cellule :
str_ass = origine.List(origine.ListCount - 1) For Each c In Me.Controls If c.Value = True Then str_ass = str_ass & "-" & c.Caption Next c
Le problème ici c'est que dans le formulaire, il n'y a pas que des CheckBox.
Me.Controlsrenvoi tous les contrôles se trouvant dans le formulaire. Et comme certains d'entre eux ne disposent pas de la propriété
Caption
, une erreur est levée.
Pour corriger cela, je propose de vérifier le type du contrôle avant de demander la valeur de la propriété
Caption
:
str_ass = origine.List(origine.ListCount - 1) For Each c In Me.Controls If TypeOf c Is MSForms.CheckBox Then If c.Value = True Then str_ass = str_ass & "-" & c.Caption End If Next c
3. Remarques
Comme vous êtes en train de travailler sur une grande application et que vous utilisez pleins de formulaires, je vous conseille de dissocier ce qui est affichage et ce qui est donnée. Bien qu'il est plus facile d'utiliser directement les textes des contrôles, il est préférable de mettre les données dans des variables que vous n'affichez pas forcément.
ça peut allez pour cette application, mais penser à ce points si jamais vous travaillez sur de plus grands projets.
Amicalement!
merci merci merci,
je viens de finaliser le projet, quelques petites modifs de cases et de présentation, pour l'instant tout marche !
merci grandement,
Amicalement
je viens de finaliser le projet, quelques petites modifs de cases et de présentation, pour l'instant tout marche !
merci grandement,
Amicalement
commentcamarcheeay
Messages postés
667
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
30 mars 2020
86
19 mars 2014 à 22:18
19 mars 2014 à 22:18
Bonjour,
Je n'ai pas l'interface devant moi, mais il me semble que Range est une classe. Pour lui affecter une valeur, il faut utiliser la fonction valeur.
Je n'ai pas l'interface devant moi, mais il me semble que Range est une classe. Pour lui affecter une valeur, il faut utiliser la fonction valeur.
k = ActiveCell.RowOu bien
range("Changement_de_spectacle!E" & k).value = resultat2.Value
k = ActiveCell.RowVoici une petite explication ...
range("Changement_de_spectacle!E" & k).value2 = resultat2.Value