Passage à la ligne suivante apres validation

Résolu
niewbiesVBA Messages postés 51 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 2 mars 2015 - 15 janv. 2015 à 15:23
niewbiesVBA Messages postés 51 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 2 mars 2015 - 17 janv. 2015 à 14:29
Bonjour le forum et bonne année ;)

Donc voilà, j'ai créé un tableau excel assez enorme, j'ai donc créer un UserForm pour pour le renseigner facilement avec une tablette, cependant, je me trouve devant un soucis, je n'arrive pas à passer à la ligne lorsque je clique sur mon bouton "nouveau défaut", je vous montre mon code (il n'est pas très propre mais je débute).

Private Sub CommandButton1_Click()
info_gen.Show
End Sub

Private Sub CommandButton3_Click()
'Variable info site (Col 1,2,3,4,5,6)
Dim INB, BAT, NIV, SALLE1, SALLE2, ANFM As String
Dim observation As String
Dim l As Integer
Dim ligne_fin As Long

ligne_fin = Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
l = ligne_fin + 1

INB = TB_inb.Value
BAT = TB_bat.Value
NIV = TB_niv.Value
SALLE1 = TB_salle1.Value
SALLE2 = TB_salle2.Value
ANFM = TB_anfm.Value

'Code information du site
Sheets("BDD").Cells(6, 1).Value = INB
Sheets("BDD").Cells(6, 2).Value = BAT
Sheets("BDD").Cells(6, 3).Value = NIV
Sheets("BDD").Cells(6, 4).Value = SALLE1
Sheets("BDD").Cells(6, 5).Value = SALLE2
Sheets("BDD").Cells(6, 6).Value = ANFM

'Code orientation du mur
If CB_nord.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 7).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 7).Value = ""
End If

If CB_sud.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 8).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 8).Value = ""
End If

If CB_ouest.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 9).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 9).Value = ""
End If

If CB_est.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 10).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 10).Value = ""
End If

'Code localisation du defaut
If CB_plancher.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 11).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 11).Value = ""
End If

If CB_radier.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 12).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 12).Value = ""
End If

If CB_plafond.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 13).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 13).Value = ""
End If

If CB_poutre.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 14).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 14).Value = ""
End If

If CB_poteau.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 15).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 15).Value = ""
End If

'Code environnement
If CB_interieur.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 16).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 16).Value = ""
End If

If CB_extprotege.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 17).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 17).Value = ""
End If

If CB_extnonprotege.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 18).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 18).Value = ""
End If

'Code accessibilité de la salle
If CB_salleoui.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 23).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 23).Value = ""
End If

If CB_risqueradio.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 24).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 24).Value = ""
End If

If CB_trxcours.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 25).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 25).Value = ""
End If

If CB_perturbexploit.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 26).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 26).Value = ""
End If

If CB_autres.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 27).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 27).Value = ""
End If

'Code accessibilité de la fissure
If CB_accfissoui.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 28).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 28).Value = ""
End If

If CB_accfisspart.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 29).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 29).Value = ""
End If

If CB_accfissnon.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 30).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 30).Value = ""
End If

If CB_accfissencomb.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 31).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 31).Value = ""
End If

If CB_accfissacces.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 32).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 32).Value = ""
End If

If CB_accfissautre.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 33).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 33).Value = ""
End If

'Code Partie A: apparence béton

'Couleur
If CB_inco.Value = True Then
Sheets("BDD").Cells(6, 35).Value = "X"
Else
Sheets("BDD").Cells(6, 35).Value = ""
End If

If CB_rou.Value = True Then
Sheets("BDD").Cells(6, 36).Value = "X"
Else
Sheets("BDD").Cells(6, 36).Value = ""
End If

If CB_blan.Value = True Then
Sheets("BDD").Cells(6, 37).Value = "X"
Else
Sheets("BDD").Cells(6, 37).Value = ""
End If

'Infiltrations

If CB_pastrace.Value = True Then
Sheets("BDD").Cells(6, 38).Value = "X"
Else
Sheets("BDD").Cells(6, 38).Value = ""
End If

If CB_trace.Value = True Then
Sheets("BDD").Cells(6, 39).Value = "X"
Else
Sheets("BDD").Cells(6, 39).Value = ""
End If

'Type d'infiltration

If CB_coulure.Value = True Then
Sheets("BDD").Cells(6, 40).Value = "X"
Else
Sheets("BDD").Cells(6, 40).Value = ""
End If

If CB_humide.Value = True Then
Sheets("BDD").Cells(6, 41).Value = "X"
Else
Sheets("BDD").Cells(6, 41).Value = ""
End If

If CB_seche.Value = True Then
Sheets("BDD").Cells(6, 42).Value = "X"
Else
Sheets("BDD").Cells(6, 42).Value = ""
End If

If CB_efflorescence.Value = True Then
Sheets("BDD").Cells(6, 43).Value = "X"
Else
Sheets("BDD").Cells(6, 43).Value = ""
End If

If CB_aureole.Value = True Then
Sheets("BDD").Cells(6, 44).Value = "X"
Else
Sheets("BDD").Cells(6, 44).Value = ""
End If

'Partie B: Aciers au droit de la fissure

If CB_tracecorosion.Value = True Then
Sheets("BDD").Cells(6, 45).Value = "X"
Else
Sheets("BDD").Cells(6, 45).Value = ""
End If

If CB_pasacier.Value = True Then
Sheets("BDD").Cells(6, 46).Value = "X"
Else
Sheets("BDD").Cells(6, 46).Value = ""
End If

If CB_acier.Value = True Then
Sheets("BDD").Cells(6, 47).Value = "X"
Else
Sheets("BDD").Cells(6, 47).Value = ""
End If

'Partie C: Etat de la surface du béton

'Général

If CB_bonetat.Value = True Then
Sheets("BDD").Cells(6, 48).Value = "X"
Else
Sheets("BDD").Cells(6, 48).Value = ""
End If

If CB_suspect.Value = True Then
Sheets("BDD").Cells(6, 49).Value = "X"
Else
Sheets("BDD").Cells(6, 49).Value = ""
End If

'Défaut relevés

If CB_resfiss.Value = True Then
Sheets("BDD").Cells(6, 50).Value = "X"
Else
Sheets("BDD").Cells(6, 50).Value = ""
End If

If CB_rsirag.Value = True Then
Sheets("BDD").Cells(6, 51).Value = "X"
Else
Sheets("BDD").Cells(6, 51).Value = ""
End If

If CB_ecaillage.Value = True Then
Sheets("BDD").Cells(6, 52).Value = "X"
Else
Sheets("BDD").Cells(6, 52).Value = ""
End If

If CB_cloquage.Value = True Then
Sheets("BDD").Cells(6, 53).Value = "X"
Else
Sheets("BDD").Cells(6, 53).Value = ""
End If

If CB_epauff.Value = True Then
Sheets("BDD").Cells(6, 54).Value = "X"
Else
Sheets("BDD").Cells(6, 54).Value = ""
End If

If CB_autre2.Value = True Then
Sheets("BDD").Cells(6, 55).Value = "X"
Else
Sheets("BDD").Cells(6, 55).Value = ""
End If

'Commentaire
Sheets("BDD").Cells(6, 56).Value = TB_commEtatSurface.Value

'Localisation de la fissure

'Salle 1

If CB_zone3R.Value = True Then
Sheets("BDD").Cells(6, 57).Value = "X"
Else
Sheets("BDD").Cells(6, 57).Value = ""
End If

If CB_zone4.Value = True Then
Sheets("BDD").Cells(6, 58).Value = "X"
Else
Sheets("BDD").Cells(6, 58).Value = ""
End If

If CB_sectfeu.Value = True Then
Sheets("BDD").Cells(6, 59).Value = "X"
Else
Sheets("BDD").Cells(6, 59).Value = ""
End If

If CB_paroiext.Value = True Then
Sheets("BDD").Cells(6, 60).Value = "X"
Else
Sheets("BDD").Cells(6, 60).Value = ""
End If

If CB_123.Value = True Then
Sheets("BDD").Cells(6, 61).Value = "X"
Else
Sheets("BDD").Cells(6, 61).Value = ""
End If

'Commentaire

Sheets("BDD").Cells(6, 62).Value = TB_commLocaFiss1.Value

'Salle 2

If CB2_zone3R.Value = True Then
Sheets("BDD").Cells(6, 63).Value = "X"
Else
Sheets("BDD").Cells(6, 63).Value = ""
End If

If CB2_zone4.Value = True Then
Sheets("BDD").Cells(6, 64).Value = "X"
Else
Sheets("BDD").Cells(6, 64).Value = ""
End If

If CB2_sectfeu.Value = True Then
Sheets("BDD").Cells(6, 65).Value = "X"
Else
Sheets("BDD").Cells(6, 65).Value = ""
End If

If CB2_paroiext.Value = True Then
Sheets("BDD").Cells(6, 66).Value = "X"
Else
Sheets("BDD").Cells(6, 66).Value = ""
End If

If CB2_123.Value = True Then
Sheets("BDD").Cells(6, 67).Value = "X"
Else
Sheets("BDD").Cells(6, 67).Value = ""
End If

'Commentaire

Sheets("BDD").Cells(6, 68).Value = TB_commLocaFiss2.Value

'Attribut fissures :

If CB_nontrav.Value = True Then
Sheets("BDD").Cells(6, 69).Value = "X"
Else
Sheets("BDD").Cells(6, 69).Value = ""
End If

If CB_trav.Value = True Then
Sheets("BDD").Cells(6, 70).Value = "X"
Else
Sheets("BDD").Cells(6, 70).Value = ""
End If

If CB_noncaract.Value = True Then
Sheets("BDD").Cells(6, 71).Value = "X"
Else
Sheets("BDD").Cells(6, 71).Value = ""
End If

If CB_ecartdixieme.Value = True Then
Sheets("BDD").Cells(6, 72).Value = "X"
Else
Sheets("BDD").Cells(6, 72).Value = ""
End If

If CB_inf1mm.Value = True Then
Sheets("BDD").Cells(6, 75).Value = "X"
Else
Sheets("BDD").Cells(6, 75).Value = ""
End If

If CB_sup1mm.Value = True Then
Sheets("BDD").Cells(6, 76).Value = "X"
Else
Sheets("BDD").Cells(6, 76).Value = ""
End If

'ecart min et ecart max

Sheets("BDD").Cells(6, 74).Value = TB_emin.Value
Sheets("BDD").Cells(6, 73).Value = TB_emax.Value

'Observation générales

observation = InputBox("Remarques sur l'inspection:", "Observations génarales")
Sheets("BDD").Cells(6, 77).Value = observation

'Photos

Sheets("BDD").Cells(6, 78).Value = TB_photo1.Value
Sheets("BDD").Cells(6, 79).Value = TB_photo2.Value
Sheets("BDD").Cells(6, 80).Value = TB_photo3.Value
Sheets("BDD").Cells(6, 81).Value = TB_photo4.Value
Sheets("BDD").Cells(6, 82).Value = TB_photo5.Value

l = l + 1
End Sub




A noter que l'UserForm correspond à une ligne de mon tableau.

Merci pour votre aide

11 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
15 janv. 2015 à 15:42
Bonjour,

Quelle macro est lancée par ton bouton "nouveau défaut" ?
Celle là : CommandButton3_Click() ?

Qu'appelles tu "retour à la ligne" ?
veux tu dire que tu écris Toujours à la ligne 6 de ta feuille ??
Si oui.. c'est normal...
Il faut remplacer le 6 que tu as écris dans tes fonctions... par ta variable " l "
Cells(6,

Cells(l,


0
niewbiesVBA Messages postés 51 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 2 mars 2015
15 janv. 2015 à 15:50
Bonjour ,

Merci de vous intéresser à mon problème, en faite dans mon tableau, les données commence a s'inscrire a partir de la ligne 6 car au dessus sont les en-tête.

La macro est bien lancer via le commandButton3, pour être précis :

Lorsque que je renseigne mon userform, je clique sur mon commandbutton3, a ce moment, il me renseigne le tableau puis se prépare a écrire sur une nouvelle ligne.

J'espere avoir été clair :)

merci encore
0
cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
15 janv. 2015 à 17:27
Bonjour,

je suppose que ton * t'indique la ligne ou tu dois écrire au prochain lancement de ta macro, alors tu dois écrire en

Cell(ligne_fin 


et pas

en
Cell(6 


et après cela tu dois replacer ton * en

Cell(ligne_fin + 1 


pour la prochaine execution.

remarque :

il serait prudent de placer un

on error goto gestion_erreur 


avant le

ligne_fin = Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row



pour éviter les erreurs si le * n'est pas la.

Bonne journée
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
Modifié par jordane45 le 15/01/2015 à 19:19
Bonsoir cgandco :

je suppose que ton * t'indique la ligne ou tu dois écrire au prochain lancement de ta macro

Je suppose que tu fais référence au * de la commande :
Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row

Donc Non.. cette instruction permet de déterminer quelle est la dernière ligne NON VIDE de la colonne A1

Et donc :
et après cela tu dois replacer ton * en
=>> Non !

Par contre.. comme je le lui ai indiqué... il doit utiliser sa variable " l " qu'il a initialisé avec le code suivant :
l = ligne_fin + 1

Et qui correspond à la première LIGNE VIDE de son tableau.
( ce qui revient au même que ce que tu lui as également proposé:.
Cell(ligne_fin + 1
. )
Il n'a donc qu'à modifier le "6" qu'il à mis dans ses CELLS pour spécifier qu'il veut utiliser soit sa variable L soit ligne_fin + 1 ce qui lui permettra ainsi d'écrire sur une nouvelle ligne automatiquement à chaque fois qu'il cliquera sur son bouton....

Par exemple :

'Code information du site
    Sheets("BDD").Cells(l, 1).Value = INB
    Sheets("BDD").Cells(l, 2).Value = BAT
    Sheets("BDD").Cells(l, 3).Value = NIV
    Sheets("BDD").Cells(l, 4).Value = SALLE1
    Sheets("BDD").Cells(l, 5).Value = SALLE2
    Sheets("BDD").Cells(l, 6).Value = ANFM

' etc...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 15/01/2015 à 19:39
Bonjour,
j'ajoute ceci à ce qu'a exprimé à fort juste titre Jordane45 :
- soit on recalcule Ligne_fin + 1 à chaque clic sur ce bouton (et la variable L est alors superfétatoire)
- soit on ne calcule qu'une seule fois L = ligne_fin + 1 et on incrémente L de une unité à chaque clic, puis on utilise L.
Cette seconde méthode est plus rapide, mais elle impose :
- a) soit de déclarer L en variable publique dans un module et de l'initialiser au Workbook_Open
- b) soit de déclarer L en variable statique dans l'évènement click et de ne la réinitialiser que si = 0
Ma préférence va au choix a), qui permet d'éviter toute perte de la valeur de L en cas de fermeture de l'Userform
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 16/01/2015 à 09:40
Et au fait :
Chacun des groupes de If Then ... else ... peut s'écrire en une seule ligne.
Exemple :
If CB_nord.Value = True Then 'Si coché ...
Sheets("BDD").Cells(6, 7).Value = "X"
Else 'Si non coché ...
Sheets("BDD").Cells(6, 7).Value = ""
End If


revient tout simplement à écrire :
Sheets("BDD").Cells(6, 7).Value = String(CB_nord.Value ^ 2, "X")


J'irais personnellement même plus loin encore (je mettrais toutes les checboxes dans un array et traiterais l'ensemble de tous ces blocs en une seule boucle de parcours de l'array, soit sur 3 lignes de code au total), mais contente-toi pour l'instant de ce qui t'a été dit plus haut.

EDIT : il y a même encore beaucoup mieux à faire (même pas besoin d'un array et, cerise sur le gâteau, pour TOUT traiter en moins de 6 lignes de code), mais nous n'y viendrons que lorsque tu auras passé avec succès ta première étape (ce qui t'a été dit plus haut).
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
niewbiesVBA Messages postés 51 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 2 mars 2015
16 janv. 2015 à 11:19
Bonjour,

Merci à tous pour vos conseil, je prend note et me met au travail de suite, je corrige mon code et reviens donc une fois la première étape réalisé.

ucfoutu : je ne connaissait pas cette méthode pour les bloc If...Then, je débute dans le VBA et ai établie ce code en parcourant divers tutoriel le concernant et je me penchait justement sur le comment raccourcir ce code que je trouvais enorme et devenait illisible. merci encore pour ces astuces.

cgandco et jordan45 : Merci également à vous deux pour votre aide, et comme dis à ucfoutu, je me met au travail de suite et reviendrais quand j'aurais franchis cette étape, je reposterais donc mon code modifié.

A plus tard :)
0
niewbiesVBA Messages postés 51 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 2 mars 2015
16 janv. 2015 à 12:36
Re-Bonjour,

Donc voilà, j'ai réécrit le code, que voici (il est vrai que c'est beaucoup plus clair :) )

Private Sub CommandButton1_Click()
info_gen.Show
End Sub

Private Sub CommandButton3_Click()

Dim observation As String
Dim l As Integer
Dim ligne_fin As Long

ligne_fin = Cells.Find("*", Range("A6"), , , xlByRows, xlPrevious).Row
l = ligne_fin + 1

'Code information du site

Sheets("BDD").Cells(l, 1).Value = TB_inb.Value
Sheets("BDD").Cells(l, 2).Value = TB_bat.Value
Sheets("BDD").Cells(l, 3).Value = TB_niv.Value
Sheets("BDD").Cells(l, 4).Value = TB_salle1.Value
Sheets("BDD").Cells(l, 5).Value = TB_salle2.Value
Sheets("BDD").Cells(l, 6).Value = TB_anfm.Value

'Code orientation du mur

Sheets("BDD").Cells(l, 7).Value = String(CB_nord.Value ^ 2, "X")
Sheets("BDD").Cells(l, 8).Value = String(CB_sud.Value ^ 2, "X")
Sheets("BDD").Cells(l, 9).Value = String(CB_ouest.Value ^ 2, "X")
Sheets("BDD").Cells(l, 10).Value = String(CB_est.Value ^ 2, "X")

'Code localisation du defaut

Sheets("BDD").Cells(l, 11).Value = String(CB_plancher.Value ^ 2, "X")
Sheets("BDD").Cells(l, 12).Value = String(CB_radier.Value ^ 2, "X")
Sheets("BDD").Cells(l, 13).Value = String(CB_plafond.Value ^ 2, "X")
Sheets("BDD").Cells(l, 14).Value = String(CB_poutre.Value ^ 2, "X")
Sheets("BDD").Cells(l, 15).Value = String(CB_poteau.Value ^ 2, "X")

'Code environnement

Sheets("BDD").Cells(l, 16).Value = String(CB_interieur.Value ^ 2, "X")
Sheets("BDD").Cells(l, 17).Value = String(CB_extprotege.Value ^ 2, "X")
Sheets("BDD").Cells(l, 18).Value = String(CB_extnonprotege.Value ^ 2, "X")

'Code accessibilité de la salle

Sheets("BDD").Cells(l, 23).Value = String(CB_salleoui.Value ^ 2, "X")
Sheets("BDD").Cells(l, 24).Value = String(CB_risqueradio.Value ^ 2, "X")
Sheets("BDD").Cells(l, 25).Value = String(CB_trxcours.Value ^ 2, "X")
Sheets("BDD").Cells(l, 26).Value = String(CB_perturbexploit.Value ^ 2, "X")
Sheets("BDD").Cells(l, 27).Value = String(CB_autres.Value ^ 2, "X")

'Code accessibilité de la fissure

Sheets("BDD").Cells(l, 28).Value = String(CB_accfissoui.Value ^ 2, "X")
Sheets("BDD").Cells(l, 29).Value = String(CB_accfisspart.Value ^ 2, "X")
Sheets("BDD").Cells(l, 30).Value = String(CB_accfissnon.Value ^ 2, "X")
Sheets("BDD").Cells(l, 31).Value = String(CB_accfissencomb.Value ^ 2, "X")
Sheets("BDD").Cells(l, 32).Value = String(CB_accfissacces.Value ^ 2, "X")
Sheets("BDD").Cells(l, 33).Value = String(CB_accfissautre.Value ^ 2, "X")

'Code Partie A: apparence béton

'Couleur

Sheets("BDD").Cells(l, 35).Value = String(CB_inco.Value ^ 2, "X")
Sheets("BDD").Cells(l, 36).Value = String(CB_rou.Value ^ 2, "X")
Sheets("BDD").Cells(l, 37).Value = String(CB_blan.Value ^ 2, "X")

'Infiltrations

Sheets("BDD").Cells(l, 38).Value = String(CB_pastrace.Value ^ 2, "X")
Sheets("BDD").Cells(l, 39).Value = String(CB_trace.Value ^ 2, "X")

'Type d'infiltration

Sheets("BDD").Cells(l, 40).Value = String(CB_coulure.Value ^ 2, "X")
Sheets("BDD").Cells(l, 41).Value = String(CB_humide.Value ^ 2, "X")
Sheets("BDD").Cells(l, 42).Value = String(CB_seche.Value ^ 2, "X")
Sheets("BDD").Cells(l, 43).Value = String(CB_efflorescence.Value ^ 2, "X")
Sheets("BDD").Cells(l, 44).Value = String(CB_aureole.Value ^ 2, "X")

'Partie B: Aciers au droit de la fissure

Sheets("BDD").Cells(l, 45).Value = String(CB_tracecorosion.Value ^ 2, "X")
Sheets("BDD").Cells(l, 46).Value = String(CB_pasacier.Value ^ 2, "X")
Sheets("BDD").Cells(l, 47).Value = String(CB_acier.Value ^ 2, "X")

'Partie C: Etat de la surface du béton

'Général

Sheets("BDD").Cells(l, 48).Value = String(CB_bonetat.Value ^ 2, "X")
Sheets("BDD").Cells(l, 49).Value = String(CB_suspect.Value ^ 2, "X")

'Défaut relevés

Sheets("BDD").Cells(l, 50).Value = String(CB_resfiss.Value ^ 2, "X")
Sheets("BDD").Cells(l, 51).Value = String(CB_rsirag.Value ^ 2, "X")
Sheets("BDD").Cells(l, 52).Value = String(CB_ecaillage.Value ^ 2, "X")
Sheets("BDD").Cells(l, 53).Value = String(CB_cloquage.Value ^ 2, "X")
Sheets("BDD").Cells(l, 54).Value = String(CB_epauff.Value ^ 2, "X")
Sheets("BDD").Cells(l, 55).Value = String(CB_autre2.Value ^ 2, "X")

'Commentaire partie C

Sheets("BDD").Cells(l, 56).Value = TB_commEtatSurface.Value

'Localisation de la fissure

'Salle 1

Sheets("BDD").Cells(l, 57).Value = String(CB_zone3R.Value ^ 2, "X")
Sheets("BDD").Cells(l, 58).Value = String(CB_zone4.Value ^ 2, "X")
Sheets("BDD").Cells(l, 59).Value = String(CB_sectfeu.Value ^ 2, "X")
Sheets("BDD").Cells(l, 60).Value = String(CB_paroiext.Value ^ 2, "X")
Sheets("BDD").Cells(l, 61).Value = String(CB_123.Value ^ 2, "X")

'Commentaire

Sheets("BDD").Cells(l, 62).Value = TB_commLocaFiss1.Value

'Salle 2

Sheets("BDD").Cells(l, 63).Value = String(CB2_zone3R.Value ^ 2, "X")
Sheets("BDD").Cells(l, 64).Value = String(CB2_zone4.Value ^ 2, "X")
Sheets("BDD").Cells(l, 65).Value = String(CB2_sectfeu.Value ^ 2, "X")
Sheets("BDD").Cells(l, 66).Value = String(CB2_paroiext.Value ^ 2, "X")
Sheets("BDD").Cells(l, 67).Value = String(CB2_123.Value ^ 2, "X")

'Commentaire

Sheets("BDD").Cells(l, 68).Value = TB_commLocaFiss2.Value

'Attribut fissures :

Sheets("BDD").Cells(l, 69).Value = String(CB_nontrav.Value ^ 2, "X")
Sheets("BDD").Cells(l, 70).Value = String(CB_trav.Value ^ 2, "X")
Sheets("BDD").Cells(l, 71).Value = String(CB_noncaract.Value ^ 2, "X")
Sheets("BDD").Cells(l, 72).Value = String(CB_ecartdixieme.Value ^ 2, "X")
Sheets("BDD").Cells(l, 75).Value = String(CB_inf1mm.Value ^ 2, "X")
Sheets("BDD").Cells(l, 76).Value = String(CB_sup1mm.Value ^ 2, "X")

'ecart min et ecart max

Sheets("BDD").Cells(l, 74).Value = TB_emin.Value
Sheets("BDD").Cells(l, 73).Value = TB_emax.Value

'Observation générales

observation = InputBox("Remarques sur l'inspection:", "Observations génarales")
Sheets("BDD").Cells(l, 77).Value = observation

'Photos

Sheets("BDD").Cells(l, 78).Value = TB_photo1.Value
Sheets("BDD").Cells(l, 79).Value = TB_photo2.Value
Sheets("BDD").Cells(l, 80).Value = TB_photo3.Value
Sheets("BDD").Cells(l, 81).Value = TB_photo4.Value
Sheets("BDD").Cells(l, 82).Value = TB_photo5.Value


l = l + 1





End Sub




Cependant je ne parvient toujours pas à passer à la ligne suivant lorsque je clique sur mon bouton.

ucfoutu : pourrais-tu m'en dire d'avantage (en mode débutant) sur cette explication :
"- soit on recalcule Ligne_fin + 1 à chaque clic sur ce bouton (et la variable L est alors superfétatoire)
- soit on ne calcule qu'une seule fois L = ligne_fin + 1 et on incrémente L de une unité à chaque clic, puis on utilise L.
Cette seconde méthode est plus rapide, mais elle impose :
- a) soit de déclarer L en variable publique dans un module et de l'initialiser au Workbook_Open "

Ou, m'expliquer mon erreur pour ce passage à la ligne...

Merci beaucoup
0
niewbiesVBA Messages postés 51 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 2 mars 2015
16 janv. 2015 à 13:04
Re,

Je me répond à moi-même car maintenant ça fonctionne

Leçon N°1 : ne jamais modifier des choses qui fonctionne, voici mon erreur :

cette ligne

ligne_fin = Cells.Find("*", Range("A6"), , , xlByRows, xlPrevious).Row


Je l'ai mise en A6, du n'importe, quoi je l'ai donc remise en A1

cette ligne

l = l + 1


Idiot de ma part, elle est déjà incrémentée au début... voici donc le code finale :

Private Sub CommandButton1_Click()
info_gen.Show
End Sub

Private Sub CommandButton3_Click()

Dim observation As String
Dim l As Integer
Dim ligne_fin As Long

ligne_fin = Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
l = ligne_fin + 1

'Code information du site

Sheets("BDD").Cells(l, 1).Value = TB_inb.Value
Sheets("BDD").Cells(l, 2).Value = TB_bat.Value
Sheets("BDD").Cells(l, 3).Value = TB_niv.Value
Sheets("BDD").Cells(l, 4).Value = TB_salle1.Value
Sheets("BDD").Cells(l, 5).Value = TB_salle2.Value
Sheets("BDD").Cells(l, 6).Value = TB_anfm.Value

'Code orientation du mur

Sheets("BDD").Cells(l, 7).Value = String(CB_nord.Value ^ 2, "X")
Sheets("BDD").Cells(l, 8).Value = String(CB_sud.Value ^ 2, "X")
Sheets("BDD").Cells(l, 9).Value = String(CB_ouest.Value ^ 2, "X")
Sheets("BDD").Cells(l, 10).Value = String(CB_est.Value ^ 2, "X")

'Code localisation du defaut

Sheets("BDD").Cells(l, 11).Value = String(CB_plancher.Value ^ 2, "X")
Sheets("BDD").Cells(l, 12).Value = String(CB_radier.Value ^ 2, "X")
Sheets("BDD").Cells(l, 13).Value = String(CB_plafond.Value ^ 2, "X")
Sheets("BDD").Cells(l, 14).Value = String(CB_poutre.Value ^ 2, "X")
Sheets("BDD").Cells(l, 15).Value = String(CB_poteau.Value ^ 2, "X")

'Code environnement

Sheets("BDD").Cells(l, 16).Value = String(CB_interieur.Value ^ 2, "X")
Sheets("BDD").Cells(l, 17).Value = String(CB_extprotege.Value ^ 2, "X")
Sheets("BDD").Cells(l, 18).Value = String(CB_extnonprotege.Value ^ 2, "X")

'Code accessibilité de la salle

Sheets("BDD").Cells(l, 23).Value = String(CB_salleoui.Value ^ 2, "X")
Sheets("BDD").Cells(l, 24).Value = String(CB_risqueradio.Value ^ 2, "X")
Sheets("BDD").Cells(l, 25).Value = String(CB_trxcours.Value ^ 2, "X")
Sheets("BDD").Cells(l, 26).Value = String(CB_perturbexploit.Value ^ 2, "X")
Sheets("BDD").Cells(l, 27).Value = String(CB_autres.Value ^ 2, "X")

'Code accessibilité de la fissure

Sheets("BDD").Cells(l, 28).Value = String(CB_accfissoui.Value ^ 2, "X")
Sheets("BDD").Cells(l, 29).Value = String(CB_accfisspart.Value ^ 2, "X")
Sheets("BDD").Cells(l, 30).Value = String(CB_accfissnon.Value ^ 2, "X")
Sheets("BDD").Cells(l, 31).Value = String(CB_accfissencomb.Value ^ 2, "X")
Sheets("BDD").Cells(l, 32).Value = String(CB_accfissacces.Value ^ 2, "X")
Sheets("BDD").Cells(l, 33).Value = String(CB_accfissautre.Value ^ 2, "X")

'Code Partie A: apparence béton

'Couleur

Sheets("BDD").Cells(l, 35).Value = String(CB_inco.Value ^ 2, "X")
Sheets("BDD").Cells(l, 36).Value = String(CB_rou.Value ^ 2, "X")
Sheets("BDD").Cells(l, 37).Value = String(CB_blan.Value ^ 2, "X")

'Infiltrations

Sheets("BDD").Cells(l, 38).Value = String(CB_pastrace.Value ^ 2, "X")
Sheets("BDD").Cells(l, 39).Value = String(CB_trace.Value ^ 2, "X")

'Type d'infiltration

Sheets("BDD").Cells(l, 40).Value = String(CB_coulure.Value ^ 2, "X")
Sheets("BDD").Cells(l, 41).Value = String(CB_humide.Value ^ 2, "X")
Sheets("BDD").Cells(l, 42).Value = String(CB_seche.Value ^ 2, "X")
Sheets("BDD").Cells(l, 43).Value = String(CB_efflorescence.Value ^ 2, "X")
Sheets("BDD").Cells(l, 44).Value = String(CB_aureole.Value ^ 2, "X")

'Partie B: Aciers au droit de la fissure

Sheets("BDD").Cells(l, 45).Value = String(CB_tracecorosion.Value ^ 2, "X")
Sheets("BDD").Cells(l, 46).Value = String(CB_pasacier.Value ^ 2, "X")
Sheets("BDD").Cells(l, 47).Value = String(CB_acier.Value ^ 2, "X")

'Partie C: Etat de la surface du béton

'Général

Sheets("BDD").Cells(l, 48).Value = String(CB_bonetat.Value ^ 2, "X")
Sheets("BDD").Cells(l, 49).Value = String(CB_suspect.Value ^ 2, "X")

'Défaut relevés

Sheets("BDD").Cells(l, 50).Value = String(CB_resfiss.Value ^ 2, "X")
Sheets("BDD").Cells(l, 51).Value = String(CB_rsirag.Value ^ 2, "X")
Sheets("BDD").Cells(l, 52).Value = String(CB_ecaillage.Value ^ 2, "X")
Sheets("BDD").Cells(l, 53).Value = String(CB_cloquage.Value ^ 2, "X")
Sheets("BDD").Cells(l, 54).Value = String(CB_epauff.Value ^ 2, "X")
Sheets("BDD").Cells(l, 55).Value = String(CB_autre2.Value ^ 2, "X")

'Commentaire partie C

Sheets("BDD").Cells(l, 56).Value = TB_commEtatSurface.Value

'Localisation de la fissure

'Salle 1

Sheets("BDD").Cells(l, 57).Value = String(CB_zone3R.Value ^ 2, "X")
Sheets("BDD").Cells(l, 58).Value = String(CB_zone4.Value ^ 2, "X")
Sheets("BDD").Cells(l, 59).Value = String(CB_sectfeu.Value ^ 2, "X")
Sheets("BDD").Cells(l, 60).Value = String(CB_paroiext.Value ^ 2, "X")
Sheets("BDD").Cells(l, 61).Value = String(CB_123.Value ^ 2, "X")

'Commentaire

Sheets("BDD").Cells(l, 62).Value = TB_commLocaFiss1.Value

'Salle 2

Sheets("BDD").Cells(l, 63).Value = String(CB2_zone3R.Value ^ 2, "X")
Sheets("BDD").Cells(l, 64).Value = String(CB2_zone4.Value ^ 2, "X")
Sheets("BDD").Cells(l, 65).Value = String(CB2_sectfeu.Value ^ 2, "X")
Sheets("BDD").Cells(l, 66).Value = String(CB2_paroiext.Value ^ 2, "X")
Sheets("BDD").Cells(l, 67).Value = String(CB2_123.Value ^ 2, "X")

'Commentaire

Sheets("BDD").Cells(l, 68).Value = TB_commLocaFiss2.Value

'Attribut fissures :

Sheets("BDD").Cells(l, 69).Value = String(CB_nontrav.Value ^ 2, "X")
Sheets("BDD").Cells(l, 70).Value = String(CB_trav.Value ^ 2, "X")
Sheets("BDD").Cells(l, 71).Value = String(CB_noncaract.Value ^ 2, "X")
Sheets("BDD").Cells(l, 72).Value = String(CB_ecartdixieme.Value ^ 2, "X")
Sheets("BDD").Cells(l, 75).Value = String(CB_inf1mm.Value ^ 2, "X")
Sheets("BDD").Cells(l, 76).Value = String(CB_sup1mm.Value ^ 2, "X")

'ecart min et ecart max

Sheets("BDD").Cells(l, 74).Value = TB_emin.Value
Sheets("BDD").Cells(l, 73).Value = TB_emax.Value

'Observation générales

observation = InputBox("Remarques sur l'inspection:", "Observations génarales")
Sheets("BDD").Cells(l, 77).Value = observation

'Photos

Sheets("BDD").Cells(l, 78).Value = TB_photo1.Value
Sheets("BDD").Cells(l, 79).Value = TB_photo2.Value
Sheets("BDD").Cells(l, 80).Value = TB_photo3.Value
Sheets("BDD").Cells(l, 81).Value = TB_photo4.Value
Sheets("BDD").Cells(l, 82).Value = TB_photo5.Value



End Sub




Le passage à la ligne se fait correctement, un grand merci à vous tous pour votre aide et vos apports.

A bientôt

PS: ucfoutu :

EDIT: il y a même encore beaucoup mieux à faire (même pas besoin d'un array et, cerise sur le gâteau, pour TOUT traiter en moins de 6 lignes de code), mais nous n'y viendrons que lorsque tu auras passé avec succès ta première étape (ce qui t'a été dit plus haut).

Je suis interresser, pourriez vous m'en dire plus ? ou j'ouvre un autre poste ?

;)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 16/01/2015 à 13:19
Je suis interresser, pourriez vous m'en dire plus ? ou j'ouvre un autre poste ?

Ma petite siesta d'abord (c'est sacré les jours de pluie).
Reviens ce soir. Tu vas voir ...
A +


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 16/01/2015 à 16:27
La sieste était bonne.
Nous y voilà donc : ===>>
Avant toute chose :
Pour chaque contrôle de ton Userform dont la valeur doit avoir une répercussion sur une cellule de ta feuille Excel :
En mode création, dans la propriété Tag de ce contrôle, tu mets la lettre (ou les deux lettres) de la colonne de "correspondance":
Exemple : en propriété Tag de la combobox CB_nord, tu mets G

Le code maintenan t ===>>
Private Sub CommandButton3_Click()
Static k As Long ' j'ai choisi k plutôt que l car "l" ressemble trop à "1" dans l'éditeur
Dim toto As Control
With Worksheets("BDD")
If k = 0 Then k = .Range("A" & Rows.Count).End(xlUp).Row
k = k + 1
For Each toto In Me.Controls
If toto.Tag <> "" Then
Select Case TypeName(toto)
Case "CheckBox", "OptionButton"
.Range(toto.Tag & k) = String(toto.Value ^ 2, "X")
Case Else
.Range(toto.Tag & k) = toto.Value
End Select
End If
Next
End With
End Sub
_______________
_________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
niewbiesVBA Messages postés 51 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 2 mars 2015
16 janv. 2015 à 18:41
Bonsoir ucfoutu,

Donc je viens de voir ton code et je t'en remercie beaucoup, cependant je viens de passer un long moment à mettre les Tag pour mes checkbox (ça en fait du monde...), puis mettre le code en place, j'ai obtenue une erreur à cette ligne :

.Range(toto.Tag & k) = toto.Value


Je vais donc chercher d'ou vient cette erreur, car elle est peut-être de moi... je reviendrais vous dire demain.

Passez une bonne soirée et merci
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 janv. 2015 à 18:48
cela est probablement du au fait que tu as mis une lettre inexacte dans la propriété tag d'un contrôle, ou encore que ce contrôle n'a pas de propriété Value.
Quel est ce contrôle ? (tu peux le connaître en affichant msgbox toto.name)
Quel est le message d'erreur reçu ?
0
niewbiesVBA Messages postés 51 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 2 mars 2015
17 janv. 2015 à 14:02
Bonjour ucfoutu,

J'ai placé le MsgBox toto.Name a cet endroit
 Case Else
MsgBox toto.Name
.Range(toto.Tag & k) = toto.Value

End Select


Et il me renvoit CommandButton2, alors que je clique sur le CommandButton3...

Merci de ton aide
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 janv. 2015 à 14:22
Cela veut dire que tu as écrit quelque-chose dans la propriété tag de CommandButton2 !
Et il ne faut pas !
Relis ce que je t'ai dit plus haut :
Pour chaque contrôle de ton Userform dont la valeur doit avoir une répercussion sur une cellule de ta feuille Excel

Et uniquement ceux-là !
CommandButton2 n'en est pas un ! Tu ne passes absolument rien de ce bouton dans quelque cellule que ce soit de ta feuille ! Et il n'a pas, d'ailleurs, de propriété Value !
0
niewbiesVBA Messages postés 51 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 2 mars 2015
17 janv. 2015 à 14:24
ça doit être une erreur alors car a force je ne voyais plus grand chose lol... je vais voir ça de suite... j'avais bien compris ce que vous m'aviez expliqué rassurez vous...
0
niewbiesVBA Messages postés 51 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 2 mars 2015
17 janv. 2015 à 14:29
effectivement, mais cela était du au début de ma réalisation de l'interface, car je croyais que la propriété tag servait pour les info bulles... encore une bêtise de ma part...

Mais je prend note de l'astuce pour le msgbox... c'est très utile ;)

Je vous remercie de votre patience et de votre aide précieuse, je vais tacher maintenant de résoudre mon nouveau problème ;)

Je vous souhaite une agréable journée (et une bonne siesta ;) )
0
Rejoignez-nous