IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

suppression ligne d'un tableau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 106
    Par défaut suppression ligne d'un tableau
    Bonjour,

    J'ai un tableau de plusieurs colonnes A à F.
    je souhaite supprimer une plage de mon tableau en fonction d'une valeur d'une combobox.
    Si la valeur de la combobox = valeur colonne F alors supprimer la plage (A:F)

    voici le code que j'ai fait mais cela ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim aznom As String, azligne As Long
    aznom = CB
    With Sheets("feuil1").Range("F2:" & Range("F2").End(xlDown).Address)
        Set C = .Find(aznom, LookIn:=xlValues)
        azligne = C.Offset(-5, 0) ' SELECTION DE 5 CELLULE A GAUCHE DE LA VALEUR DU COMBOBOX (C) CETTE LIGNE NE MARCHE PAS
     
    azligne.Delete Shift:=xlUp
     
    End With
    merci pour votre aide

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim LastLig As long, i As Long
    With Sheets("feuil1")
        LastLig = .Cells(Rows.Count, "F").End(xlUp).Row
        For i = LastLig To 2 Step -1
            If .Range("F" & i) = CB Then .Rows(i).Delete
        Next i
    End With

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut joums et le forum
    Les erreurs flagrantes que j'ai relevées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim aznom As String
    '............
    azligne = C.Offset(-5, 0)
    azligne contient la valeur de la colonne A de la ligne trouvée en C. il faudrait qu'elle soit déclarée en Variant et que tu lui affectes un range du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set azligne = range(C.Offset(-5, 0), C)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Sheets("feuil1").Range("F2:" & Range("F2").End(xlDown).Address)
    Ce que tu as écris réellement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Sheets("feuil1").Range("F2:" & ActiveSheet.Range("F2").End(xlDown).Address)
    Pas sûr que se soit bon. Tu aurais du écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Sheets("feuil1").Range("F2:" & Sheets("feuil1").Range("F2").End(xlDown).Address)
    Je te conseille de faire du pas-à-pas et de regarder la valeur de tes variables.

    un lambeau de code = un lambeau d'aide
    A+

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 106
    Par défaut
    Merci à vous pour vos réponses

    Mercatog : le code que tu as écrit ne fonctionne pas chez moi ?
    il devrait normalement effacé la ligne entiere .... ce que je ne souhaite pas faire.

    Je veux supprimer que la ligne des colonnes A à F.

    Gorfael : j'ai essayé le pas à pas également
    je nai pas compris tout le code que tu m'as écrit ... mais je ne désespère pas de la comprendre

    voici ce que j'ai déjà fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim aznom As String, azligne As Long
    aznom = CB
    With Sheets("feuil1").Range("F2:" & Range("F2").End(xlDown).Address)
        Set C = .Find(aznom, LookIn:=xlValues)
        azligne = C.Rows
    Sheets("feuil1").Rows(azligne).Delete Shift:=xlUp
    End With
    End Sub
    MAIS ce code efface toute la ligne et pas la selection souhaitée
    je pensais désigner azligne = selection à supprimer mais n'arrive pas à coder

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim LastLig As Long, i As Long
    With Sheets("feuil1")
        LastLig = .Cells(Rows.Count, "F").End(xlUp).Row
        For i = LastLig To 2 Step -1
            If .Range("F" & i) = CB Then .Rows("A" & i + 1 & ":F" & LastLig + 1).Cut .Range("A" & i)
        Next i
    End With
    telle question, telle réponse

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut joums et le forum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Sheets("feuil1").Range("F2:" & Range("F2").End(xlDown).Address)
    Toujours la même erreur : imaginons que F de "feuil1" ait des valeurs jusqu'à la ligne 100 et que "feuil2" ait des valeurs en F jusqu'à 50. Au moment du lancement de la macro
    - Si la feuille active est "feuil1" ta plage sera F2:F100, ce qui est le résultat attendu
    - Si la feuille active est "feuil2", ta plage sera F2:F50, ce qui n'est pas bon.
    De plus, quand tu codes, tu connais l'algorythme, les instructions, etc... Mais dans 6 mois, si le problème t'arrive, juste au moment idéal (suivant la loi de Murphy), ça risque d'être une catastrophe. Enfin, c'est ton problème !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    azligne = C.Rows
    Sheets("feuil1").Rows(azligne).Delete Shift:=xlUp
    2 erreurs : regardes dans l'aide la différence entre Rows et Row.
    Si tu mets Rows(x).delete, c'est la ligne complête n°x que tu effaces.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    azligne = C.Row
    Sheets("feuil1").range("A" & azligne & ":F" & azligne).Delete Shift:=xlUp
    A+

  7. #7
    Membre éclairé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Par défaut
    Salut joums, Gorfael, Mercatog et le forum

    tu est en cours de modification du fichier essai client v12 que je t'ai envoyer apres que Patricktoulon me l'avais modifié et qui fonctionne tres bien en page de suppression client dont voici le code de patricktoulon
    ce code efface toute la ligne mais ne remets pas les n°clients dans l'ordre soit
    ligne effacée avec client n° 5 mais N° 5 non réecrit donc reste a 2,3,4,6,7 etc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub CommandButton6_Click()
    On Error Resume Next
    Dim nom As String, ligne As Long
    nom = ComboBox6
    With Sheets("client").Range("d2:" & Range("D2").End(xlDown).Address)
        Set c = .Find(nom, LookIn:=xlValues)
        ligne = c.Row
    Sheets("client").Rows(ligne).Delete Shift:=xlUp
    End With
    End Sub
    mais avant de demander une modification tu aurais pu
    Ne pas oubliez pas de mettre : RESOLU au post ou tu a eu le fichier!
    cordialement

    Pascal

Discussions similaires

  1. [WD17] suppression ligne d'un tableau mémoire
    Par futur_ingenieur dans le forum WinDev
    Réponses: 6
    Dernier message: 24/08/2013, 23h16
  2. [Word] Suppression des lignes d'un tableau
    Par sat478 dans le forum VBA Word
    Réponses: 2
    Dernier message: 06/09/2006, 14h22
  3. Suppression espace entre ligne d'un tableau
    Par Alain15 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 17/08/2006, 12h04
  4. [HTML]Débutant-Suppression d'une ligne dans un tableau
    Par Kotik dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 19/07/2006, 11h53
  5. Suppression d'une ligne d'un tableau
    Par ratapapa dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/03/2006, 09h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo