AUDREY8013
XLDnaute Nouveau
salut à tous
je suis novice en vba au point que ma principale activité consiste à copier coller et adapter des codes "piqués" sur les forums
et là je bloque, je ne sais même pas si c'est réalisable, à vous les experts (comme je vous envie!) de me le dire
voici:
j'ai un document qui sera une fiche déclarative de non conformités en gestion de la qualité, mise en partage ou en ligne sur un serveur,
je voudrais qu'il soit remplissable par tous et que chaque fois qu'une fiche est sauvée (avec un bouton et pas avec "fichier/enregistrer sous"), pas uniquement chaque fois que quelqu'un l'ouvre, le nom du document sauvé s'incrémente automatiquement. Mais il ne faut pas que le fichier d'origine vierge soit modifié, pour cela, je pensais faire en sorte que chaque sauvegarde se fasse automatiquement dans un dossier différent que celui qui contient le fichier d'origine mais utiliser un fichier modèle ou une copie automatique m'irait très bien aussi
Mais il y a une contrainte :
en B13 il s'agit du processus concerné par l'anomalie, le domaine si vous préfèrez et en C13 le sous-processus, il y a 14 domaines différents à choisir dans la cellule B13 et pour chacun plusieurs sous domaines à choisir en C13
mon souci supplémentaire est que je voudrais que le nom de fichier comporte les 5 premiers caractères de la cellule C13. cette cellule est une liste de choix donc ces 5 caractères pourront varier et je voudrais que les fichiers enregistrés s'incrémente de façon suivie selon le nom
je m'explique:
- une première fiche est crée et porte sur le sous-domaine (donnée en C13) PO1-3, elle portera donc le nom: PO1-3-Ecart-1 par ex
- une deuxième personne creé une fiche qui porte sur le sous-domaine PO2-1, elle doit porter le nom PO2-1-Ecart-1 car c'est la première fiche de ce sous-domaine
- une troisème personne crée une fiche portant sur le domaine PO1-3, il s'agit de la seconde fiche crée pour ce sous-domaine, elle doit porter le nom PO1-3-Ecart-2
une deuxième feuille me servira de base de données où toutes les informations seront retranscrites et accumulées à chaque nouvelle fiche remplie, peut être ce sera utile pour ma demande mais je ne sais pas encore comment faire pour la retranscrition automatique, à voir
j'avais bricolé un code pour la sauvegarde mais il ne répond pas à ma contrainte (voir code ci-dessous)
de plus j'ai trouvé un code qui me semble prometteur je l'ai récupéré sur un forum et modifié avec mes coordonnées de cellules il est censé créer une copie de ma feuille modèle "remplie" dans une autre feuille puis d'effacer les données de la première feuille qui sert alors de modèle et ensuite de renommer la feuille "copie" avec une incrémentation dépendante des info en G10 mais comme je m'y attendais il ne fonctionne pas,
et je suis trop inculte en vba pour comprendre pourquoi, il serait bien de le compiler avec le code que j'avais déja fait pour la création du fichier de sauvegarde mais ca je sais pas faire non plus
j'espère avoir été assez claire dans ce post interminable (désolée!!) pour vous orienter dans la voie de la solution salvatrice vous qui parlez couramment ce langage magique pour moi du vba pourriez vous m'aider?
et merci très très très et encore très sincèrement
code d'origine pour créer un fichier sauvegarder
Sub SAUVEGARDER()
Dim extension As String
Dim chemin As String, nomfichier As String
Dim style As Integer
Application.ScreenUpdating = False
ThisWorkbook.ActiveSheet.Copy
extension = ".xls"
chemin = "C:\Users\p083521\Desktop\Nouveau dossier\"
nomfichier = Format(Range("C10"), "yyyy-mmmm-dd") & "-" & ActiveSheet.Range("G10") & "ECART-" & "n°" & Range("H10") & extension
With ActiveWorkbook
.ActiveSheet.DrawingObjects(1).Delete
.SaveAs Filename:=chemin & nomfichier
MsgBox "le fichier a été enregistré sous le nom : " & nomfichier & " dans le dossier: " & chemin
.Close
End With
End Sub
CODE PROMETTEUR:
Sub SAUVEGARDER()
Sheets("FICHE D'ANOMALIE").Copy Before:=Sheets(3)
ActiveSheet.Name = Replace(Range("C10").Value, "/", "-") ' le nom de l'onglet n'accepte pas /
Sheets("FICHE D'ANOMALIE").Select
Range("10:10").ClearContents
Range("13:13").ClearContents
Range("16:16").ClearContents
If Val(Mid(Range("H8").Value, 7, 2)) = Mid(Object) Then
Range("H8").Value = Left(Range("H8").Value, 5) _
& Format(Val(Right(Range("G10").Value, 3)) + 1, "000") 'même nom facture +1
Else
Range("G10").Value = Left(Range("G10").Value, 6) _
& Format(Mid(Object), "00") & Format(Val(Right(Range("G10").Value, 3)) + 1, "000") ' nom différent facture + 1
End If
End Sub
je suis novice en vba au point que ma principale activité consiste à copier coller et adapter des codes "piqués" sur les forums
et là je bloque, je ne sais même pas si c'est réalisable, à vous les experts (comme je vous envie!) de me le dire
voici:
j'ai un document qui sera une fiche déclarative de non conformités en gestion de la qualité, mise en partage ou en ligne sur un serveur,
je voudrais qu'il soit remplissable par tous et que chaque fois qu'une fiche est sauvée (avec un bouton et pas avec "fichier/enregistrer sous"), pas uniquement chaque fois que quelqu'un l'ouvre, le nom du document sauvé s'incrémente automatiquement. Mais il ne faut pas que le fichier d'origine vierge soit modifié, pour cela, je pensais faire en sorte que chaque sauvegarde se fasse automatiquement dans un dossier différent que celui qui contient le fichier d'origine mais utiliser un fichier modèle ou une copie automatique m'irait très bien aussi
Mais il y a une contrainte :
en B13 il s'agit du processus concerné par l'anomalie, le domaine si vous préfèrez et en C13 le sous-processus, il y a 14 domaines différents à choisir dans la cellule B13 et pour chacun plusieurs sous domaines à choisir en C13
mon souci supplémentaire est que je voudrais que le nom de fichier comporte les 5 premiers caractères de la cellule C13. cette cellule est une liste de choix donc ces 5 caractères pourront varier et je voudrais que les fichiers enregistrés s'incrémente de façon suivie selon le nom
je m'explique:
- une première fiche est crée et porte sur le sous-domaine (donnée en C13) PO1-3, elle portera donc le nom: PO1-3-Ecart-1 par ex
- une deuxième personne creé une fiche qui porte sur le sous-domaine PO2-1, elle doit porter le nom PO2-1-Ecart-1 car c'est la première fiche de ce sous-domaine
- une troisème personne crée une fiche portant sur le domaine PO1-3, il s'agit de la seconde fiche crée pour ce sous-domaine, elle doit porter le nom PO1-3-Ecart-2
une deuxième feuille me servira de base de données où toutes les informations seront retranscrites et accumulées à chaque nouvelle fiche remplie, peut être ce sera utile pour ma demande mais je ne sais pas encore comment faire pour la retranscrition automatique, à voir
j'avais bricolé un code pour la sauvegarde mais il ne répond pas à ma contrainte (voir code ci-dessous)
de plus j'ai trouvé un code qui me semble prometteur je l'ai récupéré sur un forum et modifié avec mes coordonnées de cellules il est censé créer une copie de ma feuille modèle "remplie" dans une autre feuille puis d'effacer les données de la première feuille qui sert alors de modèle et ensuite de renommer la feuille "copie" avec une incrémentation dépendante des info en G10 mais comme je m'y attendais il ne fonctionne pas,
et je suis trop inculte en vba pour comprendre pourquoi, il serait bien de le compiler avec le code que j'avais déja fait pour la création du fichier de sauvegarde mais ca je sais pas faire non plus
j'espère avoir été assez claire dans ce post interminable (désolée!!) pour vous orienter dans la voie de la solution salvatrice vous qui parlez couramment ce langage magique pour moi du vba pourriez vous m'aider?
et merci très très très et encore très sincèrement
code d'origine pour créer un fichier sauvegarder
Sub SAUVEGARDER()
Dim extension As String
Dim chemin As String, nomfichier As String
Dim style As Integer
Application.ScreenUpdating = False
ThisWorkbook.ActiveSheet.Copy
extension = ".xls"
chemin = "C:\Users\p083521\Desktop\Nouveau dossier\"
nomfichier = Format(Range("C10"), "yyyy-mmmm-dd") & "-" & ActiveSheet.Range("G10") & "ECART-" & "n°" & Range("H10") & extension
With ActiveWorkbook
.ActiveSheet.DrawingObjects(1).Delete
.SaveAs Filename:=chemin & nomfichier
MsgBox "le fichier a été enregistré sous le nom : " & nomfichier & " dans le dossier: " & chemin
.Close
End With
End Sub
CODE PROMETTEUR:
Sub SAUVEGARDER()
Sheets("FICHE D'ANOMALIE").Copy Before:=Sheets(3)
ActiveSheet.Name = Replace(Range("C10").Value, "/", "-") ' le nom de l'onglet n'accepte pas /
Sheets("FICHE D'ANOMALIE").Select
Range("10:10").ClearContents
Range("13:13").ClearContents
Range("16:16").ClearContents
If Val(Mid(Range("H8").Value, 7, 2)) = Mid(Object) Then
Range("H8").Value = Left(Range("H8").Value, 5) _
& Format(Val(Right(Range("G10").Value, 3)) + 1, "000") 'même nom facture +1
Else
Range("G10").Value = Left(Range("G10").Value, 6) _
& Format(Mid(Object), "00") & Format(Val(Right(Range("G10").Value, 3)) + 1, "000") ' nom différent facture + 1
End If
End Sub
Pièces jointes
Dernière édition: