VBA, Suppression d'un enregistrement
Résolu
MD64
-
MD64 -
MD64 -
Bonjour,
Bonne année à tous !!!
J'ai des données qui commence par un no d'enregistrement, une cellule (PARAM_NO_LIGNE) qui me renvoie le no de ligne de l'enregistrement en cours.
Pour supprimer un enregistrement, j'ai écrit cette simple macro:
Sub Suppression_enregistrement()
Sheets("Base").Rows([PARAM_NO_LIGNE] + 1).Delete Shift:=xlUp
End Sub
+1 pour décaler de la ligne "titres"
et il me renvoie "Erreur d'exécution "13"
Incompatibilité de type
Quelqu'un peut il me dire où se trouve l'erreur, sachant que je débute en VBA
Merci d'avance pour votre aide
PS; Si vous aviez un code pour créer une liste de dates (mois + 1) à partir d'une cellule contenant la date de début et une autre la date de fin, cela m'aiderait a rattraper le retard pris....merci
Bonne année à tous !!!
J'ai des données qui commence par un no d'enregistrement, une cellule (PARAM_NO_LIGNE) qui me renvoie le no de ligne de l'enregistrement en cours.
Pour supprimer un enregistrement, j'ai écrit cette simple macro:
Sub Suppression_enregistrement()
Sheets("Base").Rows([PARAM_NO_LIGNE] + 1).Delete Shift:=xlUp
End Sub
+1 pour décaler de la ligne "titres"
et il me renvoie "Erreur d'exécution "13"
Incompatibilité de type
Quelqu'un peut il me dire où se trouve l'erreur, sachant que je débute en VBA
Merci d'avance pour votre aide
PS; Si vous aviez un code pour créer une liste de dates (mois + 1) à partir d'une cellule contenant la date de début et une autre la date de fin, cela m'aiderait a rattraper le retard pris....merci
A voir également:
- VBA, Suppression d'un enregistrement
- Forcer la suppression d'un fichier - Guide
- Enregistrement mp3 gratuit - Télécharger - Streaming audio
- Suppression compte gmail - Guide
- Comment couper un enregistrement audio - Guide
- Telecharger studio d'enregistrement rap - Télécharger - Édition & Montage
5 réponses
[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
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...
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...
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
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
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Malheureusement, cela me donne une erreur de syntaxe, maintenant...