Completer que si une cellule est remplie

Bonjour à vous,

Excusez moi de vous déranger mais j'aurais besoin de votre aide si possible concernant une "Macro" créée à l'aide de "ENREGISTRER UNE MACRO".

En fait tout fonctionne, je l'ai associé à un bouton. Mais dans la création de cette macro, j'ai simplement tirer les cases jusqu'à la 100eme.

Je voudrais aller plus loin et me permettre de l'activer sur les cellules seulement si une des cellule de la colonne A (A1, A2...) est remplie.

Voici la macro :

Range("B1:DC1").Select
Selection.Copy
ActiveWindow.ScrollColumn = 14
ActiveWindow.ScrollColumn = 13
ActiveWindow.ScrollColumn = 1
Range("B4:DC4").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("B4:DC100"), Type:=xlFillDefault
Range("B4:DC100").Select
ActiveSheet.Calculate

End Sub

J'aimerais donc changer la partie :

Selection.AutoFill Destination:=Range("B4:DC100"), Type:=xlFillDefault
Range("B4:DC100").Select

pour que ca ne ce complète que si l'une des cellules de la colonne A est remplie.

Je vous remercie par avance.

Bonjour

A essayer

Range("B1:DC1").Copy Range("B4")
Dim dlg As Integer
dlg = Range("A" & Rows.Count).End(xlUp).Row 'trouver derniere ligne remplie en colonne A
Range("B4:DC4").AutoFill Destination:=Range("B4:DC" & dlg), Type:=xlFillDefault

Vous n'avez pas besoin de Calculate si le calcul de votre fichier n'est pas mis en mode manuel

si ok, pensez à

Crdlt

Bonjour,

Merci beaucoup pour votre réponse.
j’essaye ça dès demain et si c’est bon je valide.

Bonjour Dan,

Ca n'a pas l'air de fonctionner.
Je vous mets un exemple de fichier en PJ. Avec la macro initale.

Je vous remercie beaucoup !

13exemple.xlsx (43.37 Ko)

Bonjour,

Ca n'a pas l'air de fonctionner.

Je ne sais rien faire avec votre fichier qui plus est ne contient pas de code

Donnez quelques explications, notamment sur la colonne A qui, dans votre fichier, ne contient aucune valeur.

Bonjour,

Excusez-moi, je pensais que le fichier marchait. En effet j'ai enlevé les formules initiales en ligne 1 je les ai remplacés par des "1" car pas forcement besoin des formules pour la manipulation que je veux faire. Mais du coup je pensais que l'on pouvait retrouver ma macro dans Développeur ==> Macro ==> PAS à pas détaillé (c'est la "CLACULRP").

Du coup effectivement pas de valeur sur la colonne A car c'est des valeurs à taper à la mano pour que les autres colonnes soient remplis. Du coup ce que j'essaye de faire c'est au lieu prendre les formules allant de la colonne B à DC puis les copier et les coller pour les descendre jusqu'à la ligne 100, je voudrais à la place que B à DC se remplissent automatiquement ou à l'aide de mon bouton et cela que si j'ai inscrit quelque chose sur une des ligne de la colonne A.

Vous pensez cela possible ?

Encore merci et m'excuse de vous déranger.

Voici un fichier avec les "formules" surtout des recherche V sur d'autres fichiers donc j'ai juste tapé RCHV + SIERREUR(précédé de SIERREUR, pour marquer un commentaire si pas trouvé + quelques formule dans la feuille vers la fin).

Je vous remercie.

Excusez-moi, je pensais que le fichier marchait. En effet j'ai enlevé les formules initiales en ligne 1 je les ai remplacés par des "1" car pas forcement besoin des formules pour la manipulation que je veux faire. Mais du coup je pensais que l'on pouvait retrouver ma macro dans Développeur ==> Macro ==> PAS à pas détaillé (c'est la "CLACULRP").

les chiffres au dessus ne sont pas un souci. Mais votre code ne saurait pas rester dans votre fichier si vous n'utilisez pas l'extention XSLM lors de la sauvegarde.
Et donc dans votre nouveau fichier je n'ai pas le code non plus.

On peut faire sans bouton. Dès que vous agissez dans une cellule en colonne A, le code est exécuté comme ceci :

Ajout de données --> cela complète copie les cellules B1 à DC1 dans la ligne où vous avez complété la colonne.
Suppression --> cela vous effacera les données entre B et DC de cette ligne

Cela vous convient ?

Ah mais oui pardon, j'ai complétement oublié vraiment désolé ! (Normalement en PJ le fichier avec le code).

Et pour votre demande :

On peut faire sans bouton. Dès que vous agissez dans une cellule en colonne A, le code est exécuté comme ceci :

Ajout de données --> cela complète copie les cellules B1 à DC1 dans la ligne où vous avez complété la colonne.

Suppression --> cela vous effacera les données entre B et DC de cette ligne

Cela vous convient ?

Oui ca serait top top top ! Si c'était faisable. (Meme si avec les boutons c'est un peu mieux sachant que le ficher est vachement lourd je mets donc le mode calcul en manuel)

Oui ca serait top top top ! Si c'était faisable. (Meme si avec les boutons c'est un peu mieux sachant que le ficher est vachement lourd je mets donc le mode calcul en manuel)

OK. essayez déjà comme ceci.

- Faites un click droite sur l'onglet concerné (donc ici recherche Prix)
- Choisir "Visualiser le code"
- Dans la fenêtre collez le code ci-dessous

Option Explicit
Dim stpevt As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count > 1 Then Exit Sub
If stpevt = True Then Exit Sub '**

Application.Calculation = xlCalculationManual
If Not Intersect(Target, Range("A:A")) Is Nothing Then
    stpevt = True
    If Target.Row >= 4 Then
        Select Case Target.Value
            Case Is <> vbNullString: Range("B1:DC1").Copy Range("B" & Target.Row)
            Case Is = vbNullString: Range("B" & Target.Row & ":DC" & Target.Row).ClearContents
        End Select
    End If
    stpevt = False
End If
Application.Calculation = xlCalculationAutomatic
End Sub

Actuellement le code démarre en mettant le calcul sur manuel puis se remet en automatique à la fin.
A voir si cela convient

Faites un test et dites moi

NB : j'ai supprimé votre dernier fichier. Cela ne sert pas. Attention aussi à ne pas confondre les extension XLSM et XLTM. Les deux peuvent contenir des macros mais la finalité n'est pas la même

Du coup ca me fait ça (Je suis vraiment désolé je suis pas trop callé)

image

Du coup ca me fait ça (Je suis vraiment désolé je suis pas trop callé)

Mais vous ne suivez pas ce que je vous écrit là...
Faites exactement ce que j'écris en suivant pas à pas

Excusez moi !! C'est parfait ca marche, j'avais mal compris ! Mais du coup quand je copie colle une liste complète, j'ai fait le test pour une seule donnée, ca me calcule automatiquement le reste. Mais lorsque je colle plusieurs données il faut que je clique sur toutes les cases pour actualiser.

Pas de soucis.

Sachez que si vous voulez il est toujours possible d'utiliser un bouton pour le calcul.
Dans ce cas il suffirait de mettre une ligne de code dans la sub CALCULRP que je vois dans votre post et de supprimer deux lignes de code dans ce que je vous ai proposé.
A voir si intérêt...

Cordialement

Je pense que le plus pertinent serait seulement de créer un bouton supprimer plus besoin du reste. Mais petit bémol, quand je colle une liste de données, ca me calcule pas automatique le reste des lignes il faut que j'appuye sur la case. Une petite astuce pour ça s'il vous plait ?

Mais petit bémol, quand je colle une liste de données, ca me calcule pas automatique le reste des lignes il faut que j'appuye sur la case. Une petite astuce pour ça s'il vous plait ?

Plus haut vous m'avez dit que remplissiez la colonne A manuellement. Là il faudrait que vous m'expliquiez comment vous fonctionnez. Sur base de vos explications j'ai compris que vous remplissez la colonne A cellule par cellule.

Je pense que le plus pertinent serait seulement de créer un bouton supprimer plus besoin du reste

Heu... c'est à dire

Oui, effectivement, généralement je le remplis manuellement, mais parfois j'ai une liste de données (une centaine maximum) que je colle directement, elle m'est donnée en externe pas moyen de la trouver dans un fichier.

Et pour le bouton supprimer, ca serait dans l'idée que lorsque j'ai les informations que j'ai envie d'obtenir grâce à mon fichier, je puisse supprimer grâce au bouton de la ligne 4 à 1048576 pour plus tard recommencer.

Mais le bouton supprimer n'est pas nécessaire c'est surtout pour que mes collègues ne touchent pas trop à mon fichier ou fassent des erreurs. Mais aucun souci

Vraiment désolé si je suis pas assez explicite c'est la première fois que j'opte pour un forum. D'habitude je me débrouille seul mais là rien à faire j'ai pas pu trouver de solutions

Oui, effectivement, généralement je le remplis manuellement, mais parfois j'ai une liste de données (une centaine maximum) que je colle directement, elle m'est donnée en externe pas moyen de la trouver dans un fichier.

Ok remplacez tout le code que je vous ai donné par celui ci-dessous.

Option Explicit
Dim stpevt As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As integer

If stpevt = True Then Exit Sub

If Not Intersect(Target, Range("A:A")) Is Nothing Then
    stpevt = True
    Application.Calculation = xlCalculationManual
    For i = 4 To Range("A" & Rows.Count).End(xlUp).Row
        Range("B1:DC1").Copy Range("B" & i)
    Next i
    stpevt = False
    Application.Calculation = xlCalculationAutomatic
End If
End Sub

A noter que chaque fois que vous rajouterez une donnée, il recalculera toute la feuille depuis la ligne 4

Faites un test pour voir.
Je regarde pour le bouton SUPPRIMER

NB : dans le code de mon post précédent, j'ai rajouté une ligne (j'ai placé un astérisque pour vous montrer)

Je vous remercie bcp ! La c'est parfait ca marche très bien même lorsque je colle plusieurs données.

Ok. Parfait.

Et pour le bouton supprimer, ca serait dans l'idée que lorsque j'ai les informations que j'ai envie d'obtenir grâce à mon fichier, je puisse supprimer grâce au bouton de la ligne 4 à 1048576 pour plus tard recommencer.

Pour le code SUPPRIMER, placez le code ci-dessous là où vous avez mis le code SUB CALCUL donc dans un module (pas en dessous de celui que je vous ai donné !!

Sub Effacer()
Dim dlg As Long
Dim dcl As Integer

With ActiveSheet
    dlg = .UsedRange.Rows.Count
    dcl = .UsedRange.Columns.Count
    .Range(.Cells(4, 1), .Cells(dlg, dcl)).ClearContents
End With
End Sub

Ensuite, vous pouvez l'associer à votre bouton "Supprimer" qui est sur votre feuille
Pour ce faire, click droite sur le bouton puis "Associer à une macro" et sélectionner la macro Effacer puis OK

Faites un test


Vraiment désolé si je suis pas assez explicite c'est la première fois que j'opte pour un forum. D'habitude je me débrouille seul mais là rien à faire j'ai pas pu trouver de solutions

Pas de soucis. Je comprends très bien.

Si ok et terminé pensez à

Cordialement

Rechercher des sujets similaires à "completer que remplie"