Code vba à regarder
Fermé
00_com
Messages postés
21
Date d'inscription
mercredi 27 juillet 2022
Statut
Membre
Dernière intervention
18 janvier 2023
-
Modifié le 17 janv. 2023 à 13:12
NonoM45 Messages postés 566 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 27 novembre 2024 - 19 janv. 2023 à 04:28
NonoM45 Messages postés 566 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 27 novembre 2024 - 19 janv. 2023 à 04:28
A voir également:
- Code vba à regarder
- Code ascii de a - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Regarder tv gratuitement sans télécharger - Guide
- Regarder tiktok sans compte - Accueil - TikTok
3 réponses
f894009
Messages postés
17206
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 novembre 2024
1 710
17 janv. 2023 à 14:28
17 janv. 2023 à 14:28
Bonjour,
Vous avez changez de fichier?
Dans votre procedure:
2 end sub
Range(J7)----------------> Range("J7")
NonoM45
Messages postés
566
Date d'inscription
dimanche 14 juin 2009
Statut
Membre
Dernière intervention
27 novembre 2024
18 janv. 2023 à 08:44
18 janv. 2023 à 08:44
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+
00_com
Messages postés
21
Date d'inscription
mercredi 27 juillet 2022
Statut
Membre
Dernière intervention
18 janvier 2023
18 janv. 2023 à 14:22
18 janv. 2023 à 14:22
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.
NonoM45
Messages postés
566
Date d'inscription
dimanche 14 juin 2009
Statut
Membre
Dernière intervention
27 novembre 2024
19 janv. 2023 à 04:28
19 janv. 2023 à 04:28
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
18 janv. 2023 à 14:21
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