VBA : Chercher cellules =/= "valeur connue" dans plage déterminée
Maouac
Messages postés
2
Statut
Membre
-
Maouac Messages postés 2 Statut Membre -
Maouac Messages postés 2 Statut Membre -
Bonjour,
Tout d'abord merci à ceux qui prendront la peine de lire ce message.
J'ai un fichier sur lequel je demande à des opérateurs de faire des saisies quotidiennes de données relatives à des dimensions de colis.
Chaque ligne du fichier commence par la saisie du code barre de la pièce. Or je veux également connaitre la date de chaque saisie de code barre. D'après mes recherche, ce ne sera pas possible sans passer par du VBA. (Quand l'opérateur saisie un code barre en cellule B1, automatiquement la date du jour est inscrite en cellule G1 etc).
Pour faciliter l'écriture de la macro j'ai déjà écrit une formule dans la colonne E : " =SI(B3>0;AUJOURDHUI();"") "
Donc il ne me reste "plus qu'à" écrire une macro qui doit faire les choses suivantes :
1_ Chercher en colonne E toutes les cellules dont la valeur est différente de ""
2_ Sélectionner ces cellules (et seulement celles-ci)
3_ Copier-Coller en ne conservant que les valeurs.
Cette macro doit se lancer automatiquement avant fermeture du fichier.
Cela vous parait-il réalisable ?
Sinon je suis ouvert à toute autre suggestion pour récupérer automatiquement la date de saisie de chaque ligne du fichier.
En espérant avoir été suffisamment précis
Vous remerciant par avance du temps accordé :)
Tout d'abord merci à ceux qui prendront la peine de lire ce message.
J'ai un fichier sur lequel je demande à des opérateurs de faire des saisies quotidiennes de données relatives à des dimensions de colis.
Chaque ligne du fichier commence par la saisie du code barre de la pièce. Or je veux également connaitre la date de chaque saisie de code barre. D'après mes recherche, ce ne sera pas possible sans passer par du VBA. (Quand l'opérateur saisie un code barre en cellule B1, automatiquement la date du jour est inscrite en cellule G1 etc).
Pour faciliter l'écriture de la macro j'ai déjà écrit une formule dans la colonne E : " =SI(B3>0;AUJOURDHUI();"") "
Donc il ne me reste "plus qu'à" écrire une macro qui doit faire les choses suivantes :
1_ Chercher en colonne E toutes les cellules dont la valeur est différente de ""
2_ Sélectionner ces cellules (et seulement celles-ci)
3_ Copier-Coller en ne conservant que les valeurs.
Cette macro doit se lancer automatiquement avant fermeture du fichier.
Cela vous parait-il réalisable ?
Sinon je suis ouvert à toute autre suggestion pour récupérer automatiquement la date de saisie de chaque ligne du fichier.
En espérant avoir été suffisamment précis
Vous remerciant par avance du temps accordé :)
A voir également:
- VBA : Chercher cellules =/= "valeur connue" dans plage déterminée
- Excel compter cellule couleur sans vba - Guide
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
1 réponse
bonjour
peut être quelque chose comme ça qui inscrit la date sur une colonne donnée de la "feuille de suivi" chaque fois que quelque chose est inscrit dans une cellule de la colonne B de la feuille de l'opérateur:
je ne l'ai pas testé mais ça doit être bon
dis moi si ça te va
peut être quelque chose comme ça qui inscrit la date sur une colonne donnée de la "feuille de suivi" chaque fois que quelque chose est inscrit dans une cellule de la colonne B de la feuille de l'opérateur:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim derlig As Long
If Not Intersect(Target, Range("B:B")) Is Nothing Then 'adapter la colonne de saisie
If Worksheets("NOMDETAFEUILLE").Target <> "" Then
derlig = Worksheets("NOMDETA2emeFEUILLE").Range("B" & Rows.Count).End(xlUp).Row 'remplacer "B" par la colonne qui t'interesse
Worksheets("NOMDETA2emeFEUILLE").Range("B" & derlig).Value = Format(Now, "dd/mm/yyyy")
End If
End If
End Sub
je ne l'ai pas testé mais ça doit être bon
dis moi si ça te va
ça ira mieux comme ça :
Private Sub Worksheet_Change(ByVal Target As Range) Dim derlig As Long If Not Intersect(Target, Range("B:B")) Is Nothing Then 'adapter la colonne de saisie derlig = Worksheets("NOMDETA2emeFEUILLE").Range("B" & Rows.Count).End(xlUp).Row 'remplacer "B" par la colonne qui t'interesse Worksheets("NOMDETA2emeFEUILLE").Range("B" & derlig).Value = Format(Now, "dd/mm/yyyy") End If End SubTout d'abord merci pour tes réponses rapides !
Malheureusement ta macro n'a produit aucun effet chez moi, en même temps, étant totalement débutant ça m'a permis de creuser un peu ce qu'était un événement sous VBA en tant que condition de lancement d'une macro.
Je n'ai pas répondu avant car je n'avais pas d’éléments nouveaux à proposer.
Pour retour, j'ai creuser un peu de mon côté et j'ai finalement réussi à faire ce que je voulais faire (et même plus) avec la macro suivante (attention ce code contient surement de grosses aberrations dûes à mon niveau inexistant) :
Private Sub Worksheet_Change(ByVal Target As Range) 'Lorsqu'on change manuellement la valeur d'une cellule de la feuille "Saisie" If Target.Column = 5 Then 'si la cellule changeant de valeur est sur la colonne "E" (hauteur) If Target.Cells.Count = 1 Then 'si une seule cellule est sélectionnée If Target.Value <> 0 Then 'si la valeur de la cellule sélectionnée (après le changement de valeur" est différent de 0 Target.Offset(1, -3).Select 'sélectionner la cellule se trouvant à 1 ligne et -3 colones de distance de la cible Else: Exit Sub 'mais si la valeur de la cellule sélectionnée vaut 0, arrêter la macro End If End If End If If Target.Column <> 2 Then 'si la cellule changeant de valeur n'est pas sur la colonne "B" (Code à barre) Exit Sub 'alors fin de la macro Else 'sinon If Target.Cells.Count > 1 Then 'si le nombre de cellule selectionnée n'est pas supérieur à 1 Exit Sub 'alors fin de la macro Else 'sinon If Target.Value <> 0 Then 'si la valeur imputée est différente de 0 Target.Offset(0, 4).Select 'selectionner la cellule se trouvant à +4 colonnes "F" (Date) ActiveCell = "=Today()" 'fonction "=Aujourd'hui()" imputé dans la cellule Selection.Copy 'copier la celulle Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'coller les valeur (la date est maintenant écrite en dure) Application.CutCopyMode = False 'sortir du mode copier-coller ActiveCell.Offset(0, -3).Select 'Selectionner la cellule à -3 colonnes (Longueur) Else: Exit Sub 'mais si la valeur entrée est 0 (exemple : suppr sur la cellule), stoper la macro End If End If End If End Sub