VB Remplissage automatique cellule

Fermé
Alice7684 - 3 janv. 2023 à 16:43
yg_be Messages postés 22760 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 mai 2024 - 5 janv. 2023 à 13:57

Bonjour,

Je débute avec VBA. 

J'ai construit un classeur avec 12 feuilles. Une pour chaque mois de l'année, + deux autres feuilles récap. 

Je cherche une macro qui remplirait les cellules vide de mon tableau en cliquant sur un bouton du type "bouton de commande"

Dans mon exemple : les cellules vides que je cherche à remplir automatique (avec la valeur 0) si elles ne contiennent aucune valeurs sont : Dx:AHy. 

Merci pour votre aide
Windows / Edge 108.0.1462.54

A voir également:

3 réponses

M-12 Messages postés 1331 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 8 avril 2023 281
3 janv. 2023 à 17:29

Bonjour,

Encore faudrait-il savoir dans quelles Feuilles, dans quelles cellules

Un p’tit classeur avec 10/15 données anonymisées serait mieux pour régler le soucis 

Allez dans http://cjoint.com
Cliquez sur "PARCOURIR" pour sélectionner le classeur
Clic le bouton "CREER LE LIEN"
Clic droit quand le lien est créé "COPIER LE LIEN"
Sur le post Clic droit "Coller".

0

Bonsoir, 

Merci pour votre retour. 

ci-joint le lien de mon fichier

https://www.cjoint.com/c/MAdsEqCBiwa

Ma question c'est de créer une macro qui puisse me permettre de remplir automatiquement les cellules vides. 

J'ai trouvé un début de macro :

Sub FillEmptyBlankCellWithValue()

Dim cell As Range

Dim InputValue As String

On Error Resume Next

InputValue = InputBox("Enter value that will fill empty cells in selection", _

"Fill Empty Cells")

For Each cell In Selection

If IsEmpty(cell) Then

cell.Value = InputValue

End If

Next

End Sub

Elle me permet effectivement de remplir automatiquement les cellules SELECTIONNEES. 

Mon idées c'est de créer un bouton commande lié à cette macro.

Mais j'aimerais modifier cette macro pour qu'elle remplisse des cellules spécifiques.

A savoir pour la feuille :

- 'JANV' les cellules D5:AH56. 

- 'FEV' les cellules D5:AE57

Et ainsi de suite jusqu'à décembre. 

Peut-être créer une macro par feuilles ?

Merci d'avance pour votre aide

0
yg_be Messages postés 22760 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 mai 2024 1 480
Modifié le 3 janv. 2023 à 20:04

bonjour,

à tout hasard:

private sub zerovide(rg as range)
dim cl as range
for each cl in rg
    if cl = "" then
        cl=0
    end if
next cl
end sub
sub makro
   call zerovide(sheets("JANV").[D5:AH56])
   call zerovide(sheets("FEV").[D5:AE57])
end sub
0
Alice7684 > yg_be Messages postés 22760 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 mai 2024
5 janv. 2023 à 11:15

Bonjour, 

Je vous remercie encore pour votre aide pour le code. Aujourd'hui je suis bloquée sur deux autres points.

J'ai réussi à créer une macro qui me permets de créer un nouveau classeur "copie" du 1er. 

Le ik c'est qu'il n'est pas vierge.

J'aimerai donc incrémenter dans la macro une "consigne" pour qu'il créer la copie du classeur  vierge sur dans les feuilles suivantes :

Sheets("JANV").[D5:AH57]) et ainsi de suite jusqu'à décembre. 

Le deuxième point sur lequel je suis bloquée, j'aimerai incrémenter une Msgbox dans votre code ci-dessous du style : 

MsgBox("Etes-vous certain de vouloir mettre à jour votre classeur?",vbinformation+vbYesNoCanel,"demande de confirmation")

Le ik c'est qu'il me remplit quand même les feuilles malgré que je clique sur non ou annuler. 

Pouvez-vous m'aider ?

En vous remerciant par avance

0
yg_be Messages postés 22760 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 mai 2024 1 480 > Alice7684
5 janv. 2023 à 12:50

Je ne comprends pas ce que tu appelles "incrémenter".  Peut-être veux-tu dire "ajouter"?

Si tu demandes de l'aide à propos d'un code, il est utile de nous montrer ce code.  Ceci explique comment bien partager du code: https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

0
Alice7684 > yg_be Messages postés 22760 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 mai 2024
5 janv. 2023 à 13:44

Merci pour votre retour. 

Oui je veux ajouter. 

Ci-dessous le code me permettant de créer une copie du fichier. 

Sub NewWorkbook()
Dim wbk As Workbook
Dim Model As String
Model = "D:\EXCEL\JAUGE RICOH ASSO.xlsm"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="D:\EXCEL\new.xlsm"
Application.DisplayAlerts = True
'
' NewWorkbook Macro
'
End Sub

Depuis mon post ce matin j'ai trouvé ce bout de code pour effacer les données souhaitées . Il fonctionne, mais que sur la feuille active. Je ne parviens pas à le généraliser à l'ensemble du classeur. 

Sub effacer()

    If MsgBox("Etes-vous certain de vouloir supprimer le contenu ?", vbYesNo, "Demande de confirmation") = vbYes Then
        
        Sheets("MARS").Range("D5:AG57").ClearContents
        Sheets("AVRIL").Range("D5:AF57").ClearContents
        Sheets("MAI").Range("D5:AG5").ClearContents
        Sheets("JUIN").Range("D5:AF57").ClearContents
        
        MsgBox "Le contenu a été effacé !"
    End If

End Sub

En vous remerciant pour votre aide. 

Ps: Connaissez-vous un site pour apprendre le VB ?

0
yg_be Messages postés 22760 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 mai 2024 1 480 > Alice7684
Modifié le 5 janv. 2023 à 14:10

Pour le premier code: peut-être ouvrir le nouveau fichier, et y nettoyer chacun des onglets?

Pour le second, je suis perplexe, pourrais-tu partager ton fichier?

Je n'ai pas d'idée d'un site pour apprendre VB.  Si le contexte est Excel, peut-être une recherche "apprendre VBA Excel"?

0

Bonjour, 

Merci beaucoup pour votre aide @yg_be et d'avoir pris le temps de réfléchir à mon problème. 

Votre code fonctionne parfaitement. J'ai rajouter les fiches manquantes :) 

Il ne manque plus qu'à créer le bouton commande ^^

Vous souhaitant une belle journée

0