Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/01/2012, 15h44   #1
Nouveau Membre du Club
 
Inscription : octobre 2011
Messages : 106
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 106
Points : 38
Points : 38
Par défaut supprimer des lignes entre une constante et une variable

Rebonjour Forum,

Je voudrais supprimer toute les lignes entières de la ligne 28 à la ligne x.
Or la ligne x qui varie est déterminer par une constante "Pied" située colonne A qui me sert de butée.
J'ai donc écrit le code ci-dessous qui ne fonctionne évidemment que partiellement avant de tout me planter.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
 Sub Nouveau_Devis()
 
 Num_Fact = Range("C10").Value
 
 
Dim Sh As Worksheet
Dim i As Integer
Dim np As Integer, Nc As Integer
Dim Rnp As Range, Plag As Range
 
Application.DisplayAlerts = False
For Each Sh In ThisWorkbook.Worksheets
    If InStr(Sh.Name, "Détail") > 0 Then
        Sh.Delete
 
    End If
Next Sh
Worksheets("Devis").Protect userinterfaceonly:=True
 
 Sheets("Devis").Activate
 Set Plag = Range("A23:A150")
 
 For Each Rnp In Plag
    If Rnp.Value = "Pied" Then
    np = Rnp.Row
    Nc = np - 1
  End If
Next
 
 
  Range("F19").Value = "SDV-" & Year(Date) & "-" & Month(Date) & Day(Date) & "-" & Format(Num_Fact + 1, "0")
 Range("L5").Value = Date
 Range("A24:A28").ClearContents
 Range("C24:G28").ClearContents
 
 For i = 28 To np
 Cells(i, 1).EntireRow.Delete
 Next
Range("K13").Select
 
 End Sub
Il me supprime une partie mais ne va pas jusqu'à la ligne Range ("Ax") dont la valeur est "Pied". En plus j'ai l'impression qu'il me supprime des lignes en dessous de cette butée. Pourquoi mon Dieu?
tompom3108 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 16h00   #2
Nouveau Membre du Club
 
Inscription : octobre 2011
Messages : 106
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 106
Points : 38
Points : 38
Par défaut re

Bon j'ai compris une partie de mon erreur je crois
En fait i = Nc - 28
et je voudrais supprimer i entireRows à partir de "A28"
Donc je vais chercher à écrire ça sauf s'il y a plus simple...
tompom3108 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 16h04   #3
Membre habitué
 
Avatar de CODYCO
 
Homme
Webplanneur
Inscription : avril 2009
Messages : 141
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webplanneur
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 141
Points : 144
Points : 144
Pourquoi voiloir supprimer ces lignes, est ce pour décaler ton pied de page?
Si oui ne serait il pas plus simple de travailler avec le pied de page et d'y intégrer tes valeurs de variables?
CODYCO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 16h15   #4
Nouveau Membre du Club
 
Inscription : octobre 2011
Messages : 106
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 106
Points : 38
Points : 38
Par défaut re

Bonjour CODYCO,
J'ai pensé à cela au début mais le truc c'est que cela ma paru plus complexe que de supprimer et puis insérer par la suite des lignes standards.
Les lignes que je supprime sont toutes les mêmes (liste de produit avec prix unitaire, quantité etc..)
alors que le pied de page est plus complexe par sa "morphologie" et les formules de somme conditionnées.
C'est pour ça que je l'ai "figé" par une constante, ici la cellule (ligne np = Rnp.Row,colonne A) qui contient la valeur "Pied" et j' aurai voulu jouer sur les lignes intermédiaires.
tompom3108 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 16h23   #5
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 696
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 696
Points : 1 448
Points : 1 448
Bonjour,

Essaie en modifiant ton code comme cela
Code :
1
2
3
    For i = np To 28 Step -1
        Cells(i, 1).EntireRow.Delete
    Next
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/01/2012, 16h46   #6
Nouveau Membre du Club
 
Inscription : octobre 2011
Messages : 106
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 106
Points : 38
Points : 38
Par défaut reponse

merci gFZT82 pour ta réponse ta méthode marche parfaitement.
tompom3108 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h22.


 
 
 
 
Partenaires

Hébergement Web