Problème de code pour boucle

  • Initiateur de la discussion Initiateur de la discussion kevinch
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

K

kevinch

Guest
Bonsoir le forum

J'ai créé un formulaire de saisie (userform 3) sur lequel sont placés des boutons radios. En cochant les boutons, le code que j'ai écrit permet de renvoyer la valeur 0 ou 1 dans les feuilles et cellules correspondantes. Mais ce n'est pas ça qui me pose de problème. En fait, en testant sur la 1ère ligne de mes feuilles ça marche nickel. Une fois que l'on valide le bouton de commande, mon formulaire se remet automatiquement dans son état initial et renseigne les valeurs dans les cellules appropriées. Ce que je cherche à faire c'est qu'à chaque clic sur le bouton, les nouvelles valeurs soient copiées dans la ligne en dessous. Pour l'instant mon code ne fait qu'écraser les anciennes valeurs puisque je n'ai fait le test que sur les cellules de la ligne 4. Il y a évidemment une boucle à effectuer mais je ne sais pas comment la caler étant donné la multitude des boutons radios. J'ai laissé en commentaire de la macro "enregistrer_valeurs" le code que j'essaie d'intercaler pour boucler ce code, mais ça ne marche pas. Quelqu'un aurait-il la soluce?

Voici mon fichier: http://cjoint.com/?hFrQ6kxOAe

Merci d'avance

A+ le forum
 
Re : Problème de code pour boucle

Salut Kevinch, le forum,

Essaie d'intégrer ce code à ta macro:

Code:
Range("A65000").Select
ligne = Selection.End(xlUp).Offset(1, 0).Select

Tu devrais arriver à ligne suivant ta ligne des dernières valeurs que tu as entrées.

Ensuite, tu copieras tes valeurs à cells(ligne,x) ou quelque chose du genre.

Bonne continuation!

Gringo
 
Re : Problème de code pour boucle

Salut Gringo,

je voudrais que tu regardes mon code si c'est possible car j'ai tenté un truc similaire et je sais pas où le caser. C'est surtout ça qui m'emm....

Merci d'avance

A +
 
Re : Problème de code pour boucle

kevinch à dit:
Désolé mais je suis perdu dans mon code et mes boucles...je n'y arrive plus...au secours!
Salut
Moi non plus, je ne m'y retrouve pas : je ne sais même pas ce que je cherche
Je ne sais pas ce que tu veux enregistrer : des tas de boucles sur toutes les feuilles
Et ça m'étonnes pas que tu ne t'y retrouves plus : nom des variables :
a, b, i, k, l, v, w, x, y, z
Type Variant
avec ça, on sait tout de suite à quoi elles servent

t'as des tas de boucles du style :
For y = 1 To 5
Sheets("Satisfaction_client").Select
..........
Next y
tu sélectionnes 5 fois la même feuille : ça ne sert qu'à te ralentir

Sheets("Satisfaction_client").Select
Tout le traitement de la feuille "Satisfaction_client", puis

Sheets("Maintenabilité").Select
Tout le traitement de la feuille "Maintenabilité", et ainsi de suite
ça te permettra de t'y retrouver

De même renommer tes boutons radio en ligne te simplifierait considérablement la vie.

essaie de remplacer
PHP:
For y = 1 To 5

Sheets("Satisfaction_client").Select
If Me.Controls("optionbutton" & y) = True Then
Cells(4, y) = 1
Else
Cells(4, y) = 0
End If
Next y
par
PHP:
Sheets("Satisfaction_client").Select
For y = 1 To 5
Cells(4, y) = Me.Controls("optionbutton" & y)*-1
Next y
moi, je verrais mieux une synthèse de tes boutons qui donnerais un indice de 1 à 5 au lieu de 5 valeurs de 0 ou 1 avec un format conditionnel rouge pour 1 et 2 vert pour 4 et 5

pour ton problème de ligne, comme il faut pouvoir distinguer un enregistrement d'un autre, le plus simple c'est de mettre la date (si c'est un par jour max) ou l'heure système (Now()) dans une colonne. si tu refais tout, en A, sinon après la dernière colonne inscrite et de regarder cette colonne
PHP:
Dim Ligne_Courante as long
Dim Date_Inscription as Variant

'Date inscription des lignes ------------------------------------------'
Date_Inscription=Now()

'Feuille satisfaction_Client ------------------------------------------'
Sheets("Satisfaction_client").Select

'Détermination ligne courante -------------------------------------- '
Ligne_Courante=range("AE65536").End(xlUp).Row + 1
Range("AE" & ligne_courante)=date_courante

For y = 1 To 5
Cells(Ligne_Courante, y).Offset(0,0) = Me.Controls("optionbutton" & y)*-1
Cells(Ligne_Courante, y).Offset(0,5) = Me.Controls("optionbutton" & y+70)*-1

Cells(Ligne_Courante,  y).Offset(0,10) = Me.Controls("optionbutton" & y+5)*-1
Cells(Ligne_Courante,  y).Offset(0,15) = Me.Controls("optionbutton" & y+75)*-1

Cells(Ligne_Courante,  y).Offset(0,20) = Me.Controls("optionbutton" & y+10)*-1
Cells(Ligne_Courante,  y).Offset(0,25) = Me.Controls("optionbutton" & y+80)*-1
next Y

' Feuille Maintenabilité ---------------------------------------------'
Sheets("Maintenabilité").Select

'Détermination ligne courante -------------------------------------- '
Ligne_Courante=range("AE65536").End(xlUp).Row + 1
Range("AY" & ligne_courante)=date_courante

For y = 1 To 5
Cells(Ligne_Courante,  y).Offset(0,0) = Me.Controls("optionbutton" & y+15)*-1
Cells(Ligne_Courante,  y).Offset(0,5) = Me.Controls("optionbutton" & y+85)*-1

Cells(Ligne_Courante,  y).Offset(0,10) = Me.Controls("optionbutton" & y+20)*-1
Cells(Ligne_Courante,  y).Offset(0,15) = Me.Controls("optionbutton" & y+90)*-1

Cells(Ligne_Courante,  y).Offset(0,20) = Me.Controls("optionbutton" & y+25)*-1
Cells(Ligne_Courante,  y).Offset(0,25) = Me.Controls("optionbutton" & y+95)*-1

Cells(Ligne_Courante,  y).Offset(0,30) = Me.Controls("optionbutton" & y+30)*-1
Cells(Ligne_Courante,  y).Offset(0,35) = Me.Controls("optionbutton" & y+100)*-1

Cells(Ligne_Courante,  y).Offset(0,40) = Me.Controls("optionbutton" & y+35)*-1
Cells(Ligne_Courante,  y).Offset(0,45) = Me.Controls("optionbutton" & y+105)*-1

Cells(Ligne_Courante,  y).Offset(0,50) = Me.Controls("optionbutton" & y+40)*-1
Cells(Ligne_Courante,  y).Offset(0,55) = Me.Controls("optionbutton" & y+110)*-1
next Y
Bon, t'as de quoi t'amuser
A+
 
Re : Un autre exemple avec les modules de classe

Salut le Forum,

Kevinch, juste pour couper un peu de code dans tes macros,
j'ai pas completer le transfère des données.

Une petite démo, encore une fois avec des modules de classe

Si tu passe par ici MichelXLD et hop dans le WIKI.

Mytå

P.S. Je n'avait rien de mieux à faire ce soir 🙂
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
32
Affichages
1 K
D
  • Question Question
Réponses
5
Affichages
244
Didierpasdoué
D
Retour