VBA, Suppression d'un enregistrement
Résolu/Fermé
A voir également:
- VBA, Suppression d'un enregistrement
- Forcer la suppression d'un fichier - Guide
- Suppression page word - Guide
- Telecharger studio d'enregistrement rap - Télécharger - Édition & Montage
- Comment couper un enregistrement audio - Guide
- Suppression cookies - Guide
5 réponses
ben13.51
Messages postés
112
Date d'inscription
mercredi 18 mars 2009
Statut
Membre
Dernière intervention
11 janvier 2012
7
10 janv. 2012 à 18:47
10 janv. 2012 à 18:47
[PARAM_NO_LIGNE] ne contient pas le numéro de ligne, ce n'est pas une variable numérique. du coup tu ajoute +1 à du texte d'où l'incompatibilité de type...
Essaye comme ça peut-être:
([PARAM_NO_LIGNE].row+1).Delete Shift:=xlUp
Essaye comme ça peut-être:
([PARAM_NO_LIGNE].row+1).Delete Shift:=xlUp
ben13.51
Messages postés
112
Date d'inscription
mercredi 18 mars 2009
Statut
Membre
Dernière intervention
11 janvier 2012
7
10 janv. 2012 à 20:41
10 janv. 2012 à 20:41
Bon on va passer par une variable intermédiaire du coup
dim NumLigne as integer
Sub Suppression_enregistrement()
NumLigne = [PARAM_NO_LIGNE].Row + 1
Sheets("Base").Rows(NumLigne ).Delete Shift:=xlUp
End Sub
J'ai testé ça marche chez moi...
dim NumLigne as integer
Sub Suppression_enregistrement()
NumLigne = [PARAM_NO_LIGNE].Row + 1
Sheets("Base").Rows(NumLigne ).Delete Shift:=xlUp
End Sub
J'ai testé ça marche chez moi...
ben13.51
Messages postés
112
Date d'inscription
mercredi 18 mars 2009
Statut
Membre
Dernière intervention
11 janvier 2012
7
Modifié par ben13.51 le 11/01/2012 à 08:11
Modifié par ben13.51 le 11/01/2012 à 08:11
il ne faut pas oublier la première ligne :
dim NumLigne as integer
a placer en tout début de ta page de code
Ca déclare ta variable NumLigne comme variable numérique
Je pense que c'est ça ton erreur
dim NumLigne as integer
a placer en tout début de ta page de code
Ca déclare ta variable NumLigne comme variable numérique
Je pense que c'est ça ton erreur
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 757
Modifié par pijaku le 11/01/2012 à 08:32
Modifié par pijaku le 11/01/2012 à 08:32
Bonjour,
Pour que l'on comprenne bien...
Tu as donc des numéros d'enregistrement en Colonne A : 1, 2, 3, 4 etc... jusqu'au dernier, ET, une cellule (F5 pour l'exemple) nommée, par le menu Edition/Nom/définir, PARAM_NO_LIGNE qui contient un nombre. C'est bien cela?
Cordialement,
Franck P
Pour que l'on comprenne bien...
Tu as donc des numéros d'enregistrement en Colonne A : 1, 2, 3, 4 etc... jusqu'au dernier, ET, une cellule (F5 pour l'exemple) nommée, par le menu Edition/Nom/définir, PARAM_NO_LIGNE qui contient un nombre. C'est bien cela?
Cordialement,
Franck P
En fait, j'ai une feuille "Saisie fiche", une "Consultation fiche" une" base de données" et une paramètres où se trouve entre autre le calcul de la ligne (dans BD) de l'enregistrement en cours de consultation (La cellule B:3 nommée "PARAM_NO_LIGNE"). Je voudrai en cliquant sur le bouton "supprimer enregistrement" dans la feuille "consultation fiche" prendre le N° de ligne ("PARAM_NO_LIGNE")+ 1 pour tenir compte du décalage "titre" dans la feuille param et supprimer cette ligne dans "Base de données" en rétablissant le n° d'enregistrement...
La BDest classiquement constituée comme çà :ligne 2 : A:N° enregist, B: Nom, C:prénom...
je ne sais pas si je suis très clair dans mes explications...
La BDest classiquement constituée comme çà :ligne 2 : A:N° enregist, B: Nom, C:prénom...
je ne sais pas si je suis très clair dans mes explications...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 757
11 janv. 2012 à 11:33
11 janv. 2012 à 11:33
Cf donc la solution de Lermitte222 ci-dessous...
J'ai placé tout ça dans un blmoc with car pas sur que tu sois placé sur la bonne feuille. Ca évitera au moins deux Select...
With Sheets("Base de données") .Rows(Range("PARAM_NO_LIG").Value + 1).Delete End With
J'ai placé tout ça dans un blmoc with car pas sur que tu sois placé sur la bonne feuille. Ca évitera au moins deux Select...
Merci car comme çà cela marche . je ne sais pas pourquoi mais....
Vraiment Merci à tous de vous être penchés sur mon pb!
Maintenant j'ai tellement perdu de temps, que je vais abuser en vs demandant si vous avez une macro pour créer une liste de dates sachant que j'ai en C:1 la date de début (ex:20/12/11), qu'en C:2 je rentre un nbre de mois (ex:3), j'ai en C:3 la date de fin et en A:4,A/5 et les dates 20/12/11, 20/01/12, 20/02/12, et bien sur plus si C:3 supérieure... et surtout ne pas créer cette liste ni calcul de date de fin, si pas de date de début ...
Désolé pour mon abus mais là je suis vraiment très en retard!!
Merci d'avance
Vraiment Merci à tous de vous être penchés sur mon pb!
Maintenant j'ai tellement perdu de temps, que je vais abuser en vs demandant si vous avez une macro pour créer une liste de dates sachant que j'ai en C:1 la date de début (ex:20/12/11), qu'en C:2 je rentre un nbre de mois (ex:3), j'ai en C:3 la date de fin et en A:4,A/5 et les dates 20/12/11, 20/01/12, 20/02/12, et bien sur plus si C:3 supérieure... et surtout ne pas créer cette liste ni calcul de date de fin, si pas de date de début ...
Désolé pour mon abus mais là je suis vraiment très en retard!!
Merci d'avance
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 757
11 janv. 2012 à 12:44
11 janv. 2012 à 12:44
En C1 : saisir une date au format 01/01/2001
En C2 : saisir un nombre exemple : 18
Puis lancer cette macro
résultat à partir de A4 :
En C2 : saisir un nombre exemple : 18
Puis lancer cette macro
résultat à partir de A4 :
Sub AjouterMoisADate() Dim Lig As Integer, DrLig As Integer Dim Jour As Date If Range("C1") = "" Or Not IsDate(Range("C1")) Then MsgBox "Entrez une date au format valide en C1." Exit Sub ElseIf Range("C2") = "" Or Not IsNumeric(Range("C2")) Then MsgBox "Entrez un nombre de mois au format valide en C2." Exit Sub End If Jour = CDate(Range("C1")) DrLig = 4 + Val(Range("C2")) For Lig = 4 To DrLig - 1 Jour = DateAdd("m", 1, Jour) Range("A" & Lig) = CDate(Jour) Next Range("C3") = CDate(Jour) End Sub
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
Modifié par lermite222 le 11/01/2012 à 08:52
Modifié par lermite222 le 11/01/2012 à 08:52
Bonjour tou(te)s
Fait un copier/coller du nom de ta feuille (l'onglet) y a quelque fois des espaces qu'ont ne détecte pas bien.
Et tu n'explique pas ce qu'est ton PARAM_NO_LIGNE, le titre de la colonne ? une cellule nommée ?..
Pour que ça fonctionne oublie ton PARAM_NO_LIGNE et met plutôt
si ton PARAM_NO_LIGNE est une cellule nommée, ça fonctionnerait aussi mais y faut pas de [ ]
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Fait un copier/coller du nom de ta feuille (l'onglet) y a quelque fois des espaces qu'ont ne détecte pas bien.
Et tu n'explique pas ce qu'est ton PARAM_NO_LIGNE, le titre de la colonne ? une cellule nommée ?..
Pour que ça fonctionne oublie ton PARAM_NO_LIGNE et met plutôt
Sheets("Base").Rows([A2] + 1).DeleteJ'ai mis A2 mais à toi de l'ajuster.
si ton PARAM_NO_LIGNE est une cellule nommée, ça fonctionnerait aussi mais y faut pas de [ ]
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 757
11 janv. 2012 à 08:51
11 janv. 2012 à 08:51
Salut lermitte222
Bonne année à toi!
Bonne année à toi!
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
11 janv. 2012 à 08:54
11 janv. 2012 à 08:54
Bonjour pijaku,
Merci, à toi pareil ainsi qu'à tout les tiens.:-))
Merci, à toi pareil ainsi qu'à tout les tiens.:-))
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 757
11 janv. 2012 à 08:56
11 janv. 2012 à 08:56
merci beaucoup.
Bonne journée!
Bonne journée!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ben13.51
Messages postés
112
Date d'inscription
mercredi 18 mars 2009
Statut
Membre
Dernière intervention
11 janvier 2012
7
11 janv. 2012 à 11:44
11 janv. 2012 à 11:44
Mais si PARAM_NO_LIGNE est toujours en B3 alors PARAM_NO_LIGNE+1 = 4...
Donc tu peux te contenter du code
Sheets("Base").Rows(4).Delete Shift:=xlUp
Donc tu peux te contenter du code
Sheets("Base").Rows(4).Delete Shift:=xlUp
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 757
11 janv. 2012 à 11:51
11 janv. 2012 à 11:51
Mis à part que la il ne veux pas utiliser le 3 de B3, mais la valeur contenue dans la cellule B3 nommée PARAM_NO_LIGNE
ben13.51
Messages postés
112
Date d'inscription
mercredi 18 mars 2009
Statut
Membre
Dernière intervention
11 janvier 2012
7
11 janv. 2012 à 13:30
11 janv. 2012 à 13:30
c ça que je n'avais pas compris...
tout s'explique
bonne année
tout s'explique
bonne année
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 757
11 janv. 2012 à 13:31
11 janv. 2012 à 13:31
Bonne année également.
A+
A+
10 janv. 2012 à 19:06
Malheureusement, cela me donne une erreur de syntaxe, maintenant...