Cellule Vide
Bonjour
Je pense bloqué sur une macro assez simple mais je n'arrive pas a faire en sorte de renvoyer un message d'erreur si une cellule est vide sur une ligne déjà commencée ^^
Car il faut que tout les champs de la ligne soient remplis pour que mon projet fonctionne donc je voudrais que l'on oblige l'utilisateur a remplir la totalité des champs une fois qu'il a commencé a remplir une ligne
bonjour
mettre une colonne "de contrôle" qui contient
= SI(A2="";"Saisie incomplète"";"")
tu peux :
- complexifier le SI pour intégrer plusieurs cellules à contrôler
- mettre la colonne de contrôle en caractères rouges
- créer une cellule de contrôle général = SI (uneseulecelluledecolonnedecontrole <>"";"problème de saisie" ; "")
Salut jmd
Qu'entends tu par colonne de contrôle ?
Car moi en fait c'est un bouton qui va vérifier si les lignes ont été correctement remplies ( en fait il sera fusionner avec un autre qui exportera la feuille Excel en fichier CSV , du coup les deux macro seront lié genre l'utilisateur appuie sur le bouton d'export BIM la macro de vérification des lignes se lance si tout est nickel alors l'export se fait sinon BOUM messageBox disant qu'il reste des champs à remplir.
Tu vois ce que je veux dire ou pas :$ ?
re
oui, je vois
mais il ne faut pas faire comme ça. Trop complexe et dans 6 mois il y aura des pb (avec VBA c'est comme ça)
pour importer et/ou fusionner des données (xls, xlsx ou txt ou csv etc... faire menu Données/récupérer
et ensuite les utilisateurs ne font que "actualiser". C'est automatique.
Microsoft améliore sans cesse cette fonction.
pourquoi exporter en csv ?
Le CSV car tout le travail que je fais sur EXCEL ne sert en fait qu'a préparer les données en vue de les injecter dans une application qui prend du CSV comme modèle d'import ^^
Ok du coup je laisse tomber l'idée de la macro mais je ne vois pas comment faire pour les avertir qu'ils n'ont pas tout saisie sur les lignes alors
- Messages
- 2'417
- Excel
- 2019
- Inscrit
- 13/07/2017
- Emploi
- Formateur, animateur,tech.informatique
Salut Andre
Le soucis c'est que je ne peux pas utiliser ce format car j'ai besoin d'un format excel classique pour que ma macro export CSV fonctionne
car regarde mon code pour le CSV ressemble a ca et ne prend pas en compte un Userform
Sub MaJData()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim Tbl() As String
Dim Ligne As String
Dim Dossier As String
Dim chemin As String
Dim Fichier As String
Dim i As Long
Dim j As Long
Dossier = "C:\temp\" '<--- chemin à adapter !
'nom du fichier avec la date du jour
Fichier = "Ajout_Référence_ISA" & " " & Format(Now, "dd-mm-yyyy") & ".csv"
'full path
chemin = Dossier & Fichier
'si clic sur "Non", fin du programme
If MsgBox("Voulez-vous créer le fichier '" & Fichier & "' qui sera stocké dans le dossier '" & Dossier & "'?", vbQuestion + vbYesNo, "Fichier .CSV") = vbNo Then Exit Sub
'adapter le nom de la feuille à exporter
Set Fe = Worksheets("REFERENCES")
'défini la plage sur toute la feuille à exporter
Set Plage = DefPlage(Fe, 1, 1)
'crée les lignes pour les enregistrements tabulés avec comme séparateur ";"
For i = 1 To Plage.Rows.Count
For j = 1 To Plage.Columns.Count: Ligne = Ligne & Plage(i, j).Value & ";": Next j
'supprime le "," de fin
Ligne = Left(Ligne, Len(Ligne) - 1)
'stocke dans un tableau et met un ; a la place d'un emplacement vide dans le CSV ( Esthetique)
ReDim Preserve Tbl(1 To i)
Tbl(i) = Ligne
'pour la suivante
Ligne = ""
Next i
'création du fichier .csv
Open chemin For Output As #1
For i = 1 To UBound(Tbl): Print #1, Tbl(i): Next i
Close #1
'vérifie que le fichier est bien sur le disque sinon, message d'erreur
If Dir(chemin) <> "" Then
'message de confirmation
MsgBox "Le fichier '" & Fichier & "' a bien été créé et enregistré dans le dossier '" & Dossier & "' !", vbInformation
Else
MsgBox "Une erreur c'est produite durant la création du fichier .csv !", vbExclamation
End If
End Sub
Function DefPlage(Fe As Worksheet, L As Long, c As Long) As Range
On Error GoTo fin
With Fe
Set DefPlage = .Range(.Cells(L, c), _
.Cells(.Cells.Find("*", .[A1], -4123, , _
1, 2).row, .Cells.Find("*", .[A1], -4123, , _
2, 2).Column))
End With
Exit Function
fin:
Set DefPlage = Nothing
End Function