Code vba à regarder
NonoM45 Messages postés 985 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Débrouillardise comme je peux : un code est commencé mais cela ne fonctionne pas . Quelqu'un pourrait-il y regarder de plus près. ce serait gentil
Cela doit être une bêtise mais je ne comprends pas
Sub ajouter_modifier()
'module1
Dim ligne As Integer
ligne = 2
'vérifie si la cellule J7 de la feuille bdd = 0
If (Range(J7).Value = 0) Then
While Sheets("bdd").Cells(ligne, 3).Value <> ""
ligne = ligne + 1
Wend
MsgBox ligne
Sheets("bdd").Cells(ligne, 2).Value = Range("d23") ' Numero_id
Sheets("bdd").Cells(ligne, 3).Value = Range("b5") ' dte_inscription
Sheets("bdd").Cells(ligne, 4).Value = Range("b8") ' Civilité
Sheets("bdd").Cells(ligne, 5).Value = Range("b11") ' Nom
Sheets("bdd").Cells(ligne, 6).Value = Range("b14") ' Prénom
Sheets("bdd").Cells(ligne, 7).Value = Range("b17") ' prénom2
Sheets("bdd").Cells(ligne, 8).Value = Range("b20") ' date_naissance
Sheets("bdd").Cells(ligne, 9).Value = Range("b23") ' concat_N_P_P2
Sheets("bdd").Cells(ligne, 10).Value = Range("b27") ' Adresse
Sheets("bdd").Cells(ligne, 11).Value = Range("b30") ' complément_adresse
Sheets("bdd").Cells(ligne, 12).Value = Range("b34") ' numéro_B
Sheets("bdd").Cells(ligne, 13).Value = Range("b36") ' Code_postal
Sheets("bdd").Cells(ligne, 14).Value = Range("b38") ' Ville
Sheets("bdd").Cells(ligne, 15).Value = Range("b40") ' pays
Sheets("bdd").Cells(ligne, 16).Value = Range("b42") ' TélBfixe
Sheets("bdd").Cells(ligne, 17).Value = Range("bb44") ' TélBgsm
Sheets("bdd").Cells(ligne, 18).Value = Range("b46") ' TélBprof
Sheets("bdd").Cells(ligne, 19).Value = Range("d20") ' age
Sheets("bdd").Cells(ligne, 20).Value = Range("d5") ' poids
Sheets("bdd").Cells(ligne, 21).Value = Range("d8") ' taille
Sheets("bdd").Cells(ligne, 22).Value = Range("d11") ' Mail
Sheets("bdd").Cells(ligne, 23).Value = Range("d14") ' messenger
Sheets("bdd").Cells(ligne, 24).Value = Range("d17") ' WhatsApp
Sheets("bdd").Cells(ligne, 25).Value = Range("g34") ' numérof
Sheets("bdd").Cells(ligne, 26).Value = Range("g36") ' Code_postalf
Sheets("bdd").Cells(ligne, 27).Value = Range("g38") ' Villef
Sheets("bdd").Cells(ligne, 28).Value = Range("g40") ' paysf
Sheets("bdd").Cells(ligne, 29).Value = Range("g42") ' Télfixe_f
Sheets("bdd").Cells(ligne, 30).Value = Range("g44") ' Télgsm_f
Sheets("bdd").Cells(ligne, 31).Value = Range("g46") ' Télprof_f
Sheets("bdd").Cells(ligne, 32).Value = Range("b49") ' remarques générales
'efface contenu cellules du formulaire
Range("d23") = "" ' Numero_id
Range("b5") = "" ' dte_inscription
Range("b8") = "" ' Civilité
Range("b11") = "" ' Nom
Range("b14") = "" ' Prénom
Range("b17") = "" ' prénom2
Range("b20") = "" ' date_naissance
Range("b23") = "" ' concat_N_P_P2
Range("b27") = "" ' Adresse
Range("b30") = "" ' complément_adresse
Range("b34") = "" ' numéro_B
Range("b36") = "" ' Code_postal
Range("b38") = "" ' Ville
Range("b40") = "" ' pays
Range("b42") = "" ' TélBfixe
Range("bb44") = "" ' TélBgsm
Range("b46") = "" ' TélBprof
Range("d20") = "" ' age
Range("d5") = "" ' poids
Range("d8") = "" ' taille
Range("d11") = "" ' Mail
Range("d14") = "" ' messenger
Range("d17") = "" ' WhatsApp
Range("g34") = "" ' numérof
Range("g36") = "" ' Code_postalf
Range("g38") = "" ' Villef
Range("g40") = "" ' paysf
Range("g42") = "" ' Télfixe_f
Range("g44") = "" ' Télgsm_f
Range("g46") = "" ' Télprof_f
Range("b49") = "" ' remarques générales
Else
MsgBox "Tous les champs ne sont pas correctement renseignés"
End If
End Sub
End Sub
le fichier est joint.
Je souhaiterais effacer le bouton valider que je ne sais plus supprimer....
j'ai créé une numérotation automatique dans bdd sous la forme : =SI(B2="numero_ID";1;B2+1) comment faire pour voir apparaître ce numéro après enregistrement sur le formulaire dans la cellule et qu'il garde ce numéro toujours fixe même si filtre dans la bdd.
j'ai essayé de formater la cellule d11 mail comme ceci mais toujours le même problème bug !
via le ruban Données,Validation des données,
Personnalisé,
Formule
=ET(CHERCHE('@';D11)>0; CHERCHE('.';D11)>0; NBCAR(D11)>6)
comment retrouver un enregistrement par la variable nom concat_N_P_P2 et utiliser ces données dans un classeur 2 avec différentes feuilles reprenant les valeurs de ces données reprises sur le formulaire ?
Comment faire une macro vba pour passer de case en case à encoder sauf date inscription (b5), age (d20), ville (b38) et (g38) sans userform si possible
comment supprimer un enregistrement avec un message su style : Etes vous sûr(e) de vouloir supprimer ce patient ?
voilà toutes les questions que je me pose concernant ce formulaire.
Si quelqu'un pouvait m'aider, car là je ne vois plus cela dépasse mes petites compétences ?
merci bcp !
https://www.cjoint.com/c/MArl62fbAga
Windows / Chrome 109.0.0.0
- Code vba à regarder
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Regarder tv gratuitement sans télécharger - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
3 réponses
Bonjour,
Vous avez changez de fichier?
Dans votre procedure:
2 end sub
Range(J7)----------------> Range("J7")
Bonjour,
Le code peut être largement optimisé, voici ce que l'on peut faire
Sub Ajouter_Modifier()
Dim Col As Long, ListeCel As String, TabCel() As String
Dim NewLig As Long
' vérifie si la cellule J7 du formualire <> 0
If ActiveSheet.Range("J7").Value <> 0 Then
MsgBox "Tous les champs ne sont pas correctement renseignés"
Exit Sub
End If
' Liste des celluls avec valeurs dans l'ordre des colonnes
ListeCel = "D23,B5,B8,B11,B14,B17,B20,B23,B27,B30,B34,B36,B38B40,B42,B44,B46,"
ListeCel = ListeCel & "D20,D5,D8,D11,D14,D17,G34,G36,G38,G40,G42gG44,G46,B49"
' Tableau des colonnes
TabCel = Split(ListeCel, ",")
' Sinon
With Sheets("bdd")
' Nouvelle ligne
NewLig = .Range("B" & Rows.Count).End(xlUp).Row + 1
' Pour chaque colonne
For Col = 0 To UBound(TabCel)
' Isncrire la valeur de la cellule de la liste
Sheets("bdd").Cells(NewLig, 2 + Col).Value = Sheets("formulaire").Range(TabCel(Col))
Next Col
'efface contenu cellules du formulaire
For Col = 0 To UBound(TabCel)
' Effacer la cellule
Range(TabCel(Col)).ClearContents
Next Col
End With
End Sub
A+
Bonjour Nono M45
Merci de votre réponse.
Je viens de tester votre code. Mais il y a un souci : la macro ne tient pas compte des cellules fusionnées ne les copie pas dans bdd et efface les données, formules, formats du formulaire
Je préfère rester sur mon code corrigé par f89409 (encore merci) même si pas clair pour les experts mais il copie les valeurs les cellules fusionnées et garde les formats et formules.
Merci d'y avoir passé du temps.
Pour celui ou celle que cela intéresserai
Petit correction du code précédent (il y avait 1 ou 2 coquilles ????)
Sub Ajouter_Modifier()
Dim Col As Long, ListeCel As String, TabCel() As String
Dim NewLig As Long
' vérifie si la cellule J7 du formualire <> 0
If ActiveSheet.Range("J7").Value <> 0 Then
MsgBox "Tous les champs ne sont pas correctement renseignés"
Exit Sub
End If
' Liste des celluls avec valeurs dans l'ordre des colonnes
ListeCel = "D23,B5,B8,B11,B14,B17,B20,B23,B27,B30,B34,B36,B38,B40,B42,B44,B46,"
ListeCel = ListeCel & "D20,D5,D8,D11,D14,D17,G34,G36,G38,G40,G42,G44,G46,B49"
' Tableau des colonnes
TabCel = Split(ListeCel, ",")
' Sinon
With Sheets("bdd")
' Nouvelle ligne
NewLig = .Range("B" & Rows.Count).End(xlUp).Row + 1
' Pour chaque colonne
For Col = 0 To UBound(TabCel)
' Isncrire la valeur de la cellule de la liste
Sheets("bdd").Cells(NewLig, 2 + Col).Value = Sheets("formulaire").Range(TabCel(Col)).Value
Next Col
'efface contenu cellules du formulaire
For Col = 0 To UBound(TabCel)
' Effacer la cellule
Range(TabCel(Col)).Value = ""
Next Col
End With
End Sub
Bonjour f894009,
Merci pour votre réponse.
non, je ne change pas de fichier comme j'ai du temps, j'ai essayé de construire qqchse où le raisonnement est plus clair.
j'expérimente excel. Vous remarquerez à la construction du code vba que je ne suis pas qq'un d'expérimenté. J'ai voulu tenter sans userform pour savoir jusqu'où je pouvais aller.
Merci
bien cordialement