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

Excel Discussion :

besoin d'aide tableau


Sujet :

Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    fonction publique
    Inscrit en
    Octobre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : fonction publique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut besoin d'aide tableau
    bonjour ,


    je débute en vba voici le problème que j'aimerai vous soumettre ,

    Dans l'userforme1, j'ai crée un bouton " supprimer" , qui devrait supprimer la ligne correspondante dans ma feuille "liste"
    et faire remonter les autres lignes afin de ne pas laisser de vide dans le tableau
    mais le code me renvoie une erreur ( classe range a échouée )

    code :
    Nom : 1.PNG
Affichages : 294
Taille : 11,3 Ko



    Merci pour votre aide

    Dominique

  2. #2
    Inactif  
    Homme Profil pro
    Analyste-Programmeur / Intégrateur ERP
    Inscrit en
    Mai 2013
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-Programmeur / Intégrateur ERP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 511
    Points : 10 335
    Points
    10 335
    Par défaut
    Bonjour,

    C'est la façon d'indiquer la ligne qui n'est pas la bonne, il n'y a pas besoin des guillemets, et il suffit de ne mettre qu'une fois le numéro de la ligne (surtout si vous n'en supprimez qu'une).

    Sinon êtes-vous bien sur la feuille "Liste" lorsque votre Userform tente de supprimer l'enregistrement ?

    Une autre chose à faire serait de lui préciser le nom de la feuille, cela ne coût rien, et cela pourra vous éviter des problèmes (si par mégarde vous lancer votre Userform en étant sur une autre feuille, vous risqueriez de supprimer une ligne de cette autre feuille).

    Cela devrait normalement fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Liste").Rows(31).Delete Shift:=xlUp
    Autre question, votre enregistrement à supprimer se trouve toujours sur la ligne 31 ? Car je ne vois rien dans le code joint qui permet de déterminer l'emplacement de la ligne à supprimer (enfin c'est peut-être juste un bout de code exemple, et non le code réel ?).


    Cordialement.

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Au lieu de mettre ton code sous forme d'image, mets le sous forme de texte avec des balises CODE (l'icone # dans l'éditeur).

    Le shift de ton Delete est inutile : quand cette méthode est appliquée à Row, le décalage est forcément vers le haut.
    Tout comme Excel ne te pose pas de question sur le décalage quand tu fait une suppression après avoir sélectionné toute une ligne.

    Il n'est pas non plus indispensable d'utiliser des variables intermédiaires pour les paramètres d'un MsgBox, sauf si on compte utiliser plusieurs fois ces mêmes messages dans le code.
    Idem pour la valeur renvoyée par cette même MsgBox.

    Ton code peut tenir en une seule ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton4_Click()
       If MsgBox("Voulez-vous supprimer la ligne 31 ?", vbYesNo + vbCritical + vbDefaultButton2, "Séquence de suppression") = vbYes Then Rows(31).Delete
    End Sub
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    fonction publique
    Inscrit en
    Octobre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : fonction publique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Non , en fait il faudrait qu'à partir du formulaire , après avoir lancé le champ de recherche ,
    je puisse supprimer la ligne qui correspond au résultat affiché , donc n'importe qu'elle ligne
    sur la feuille "liste" .
    résultat pour cette saisie, effacer la ligne 4 et faire remonter la ligne 5 pour qu'il n'y ai pas de vide sur le fichier
    Nom : 2.PNG
Affichages : 203
Taille : 34,2 Ko

  5. #5
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par lacryma Voir le message
    Non , en fait il faudrait qu'à partir du formulaire , après avoir lancer le champ de recherche ,
    je puisse supprimer la ligne qui correspond au résultat afficher , donc n'importe qu'elle ligne sur la feuille "liste" .
    Pour déterminer la ligne, utilise la méthode Find de Range.
    https://msdn.microsoft.com/fr-fr/lib.../ff839746.aspx
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    fonction publique
    Inscrit en
    Octobre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : fonction publique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Merci Zirak et Menhir pour vos conseils , mais je suis toujours bloqué ,
    je n'ai pas le niveau requis pour trouver cette dernière ligne de code (en rouge) ,
    qui devrait fonctionner suivant la copie d'écran postée ci dessus ...

    Private Sub CommandButton4_Click()
    'Supprime un enregistrement
    Dim msg As String, title As String, Response As String
    Dim style As Integer
    Application.ScreenUpdating = False
    msg = "Voulez-vous supprimer cet enregistrement ?"
    style = vbYesNo + vbCritical + vbDefaultButton2
    title = "Séquence de Suppression"
    Response = MsgBox(msg, style, title)
    If Response = vbYes Then
    Rows("31:31").Delete shift:=xlUp
    End If
    End Sub

    Cordialement

  7. #7
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par lacryma Voir le message
    Merci Zirak et Menhir pour vos conseils , mais je suis toujours bloqué ,
    je n'ai pas le niveau requis pour trouver cette dernière ligne de code (en rouge) :
    Euh... c'est une plaisanterie ?
    Je t'ai fourni un code complet pour remplacer celui-ci.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  8. #8
    Inactif  
    Homme Profil pro
    Analyste-Programmeur / Intégrateur ERP
    Inscrit en
    Mai 2013
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-Programmeur / Intégrateur ERP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 511
    Points : 10 335
    Points
    10 335
    Par défaut
    @Menhir: Un code complet qui ne correspondait pas complètement à sa demande en l'état, puisque sa demande était incomplète.


    @Lacryma : Menhir t'as donné un lien sur la fonction "Find", as-tu été le lire ? Qu'est-ce que tu n'as pas compris ? As-tu essayé de mettre ce qui était indiqué dans le lien en application, et si oui, peux-tu nous fournir ton nouveau code ?

    Comme indiqué dans les règles du forum, nous sommes surtout ici pour aider les gens à progresser, non pour faire le travail complet à leur place.

    Essais déjà de mettre en œuvre les solutions proposées, et si tu bloques à ce moment là, on regardera avec toi les possibles erreurs commises sur ton nouveau code.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    fonction publique
    Inscrit en
    Octobre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : fonction publique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Euh... c'est une plaisanterie ?
    Je t'ai fourni un code complet pour remplacer celui-ci.
    Désolé Menhir
    cela ne fonctionne pas ...

    c'est certainement de ma faute , je me suis mal exprimé en début de demande ....
    il est possible que mon code ne correspond pas au résultat voulu , puisque je l'ai trouvé
    sur le net ....

    faudrait juste prendre en compte comment faire fonctionner le bouton " quitter" suivant
    les explications sur la copie d'écran que j'ai jointe plus haut dans le message .

    cordialement

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    fonction publique
    Inscrit en
    Octobre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : fonction publique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Le souci c'est que je n'ai aucune connaissance en vba , mais je vais essayer
    d'y comprendre quelque chose d'après vos liens ....
    Je suis d'accord sur le fait de ne pas apporter de solution toute faite à chacun
    des nouveaux venus ...

    Je reviendrai donc vers vous un peu plus tard .....
    cela pourrait durer quelques semaines lol

    bonne journée à vous

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    fonction publique
    Inscrit en
    Octobre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : fonction publique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    En fait j'ai suivi un tuto pour créer mon formulaire ,
    donc copier / coller c'est facile , puis ,
    je me suis rendu compte qu'un bouton " supprimer" serait le bienvenu ,
    et l'à c'est la cata !!!

  12. #12
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par lacryma Voir le message
    cela ne fonctionne pas ...
    Waoo ! On peut dire que ta description du dysfonctionnement est vraiment claire et détaillée.

    Citation Envoyé par lacryma Voir le message
    Le souci c'est que je n'ai aucune connaissance en vba
    Ca n'a rien d'incurable : http://bidou.developpez.com/article/VBA/
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    fonction publique
    Inscrit en
    Octobre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : fonction publique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Je pensais avoir trouvé ,
    mais pas de chance , ça bloque toujours !

    Erreur d'exécution 424 , objet requis

    Private Sub CommandButton4_Click()
    'Supprime un enregistrement
    Dim msg As String, title As String, Response As String
    Dim style As Integer
    Application.ScreenUpdating = False
    msg = "Voulez-vous supprimer cet enregistrement ?"
    style = vbYesNo + vbCritical + vbDefaultButton2
    title = "Séquence de Suppression"
    Response = MsgBox(msg, style, title)
    If Response = vbYes Then
    Rows([B2:B1048576].Find(ComBox1.Value).Row).EntireRow.Delete
    End If
    End Sub

  14. #14
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par lacryma Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rows([B2:B1048576].Find(ComBox1.Value).Row).EntireRow.Delete
    Ca, c'est ce qu'on appelle du gloubiboulga.
    Tu sembles avoir essayé d'amalgamer des bouts de code récupérés dans différentes sources sans vraiment comprendre leur contenu.

    Ceci devrait être un peu mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B2", Range("B" & Rows.Count).End(xlUp)).Find(ComBox1.Value).EntireRow.Delete
    Cela dit, généralement, Find s'utilise en deux temps : on met le résultat de cette méthode dans une variable de type Range, on vérifie qu'elle contient quelque chose (Not Nothing = ) et si c'est le cas, on exploite le résultat.
    L'utiliser directement, c'est jouable mais c'est risqué.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    fonction publique
    Inscrit en
    Octobre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : fonction publique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Menhir ,

    j'ai essayé

    Range("B2", Range("B" & Rows.Count).End(xlUp)).Find(ComBox1.Value).EntireRow.Delete

    j'obtiens toujours la même erreur...

    Le fichier est pour le boulot , mais vu mon age , j'ai bien peur que le temps que je trouve la solution
    je sois à la retraite ....
    Bon je vais continuer mon bidouillage

  16. #16
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Tu réponds 10 min après que j'ai posté ???
    Tu ne pourrais pas prendre un peu de temps pour essayer de comprendre ce qui t'a été transmis et essayer un peu de voir si tu ne peux pas trouver toi-même où se situe le problème ?
    Tu peux faire un minimum d'effort toi-même non ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  17. #17
    Nouveau Candidat au Club
    Homme Profil pro
    fonction publique
    Inscrit en
    Octobre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : fonction publique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Oui , bien sur je vais essayer de comprendre ,
    cela fait maintenant 3 jours que j'essaye en vain de venir à bout
    de ce problème ....
    Désolé de vous prendre de votre temps

Discussions similaires

  1. Besoin d'aide tableau croisé dynamique
    Par GayoIBK dans le forum Excel
    Réponses: 3
    Dernier message: 13/01/2016, 09h04
  2. [XL-2010] Besoin d'aide Tableau VBA
    Par mariecaro dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 28/06/2013, 23h00
  3. [XL-2007] Besoin d'aide Tableau
    Par laurentny dans le forum Excel
    Réponses: 3
    Dernier message: 05/05/2010, 16h50
  4. [Tableaux] besoin d'aide tableau multidimensionnel
    Par nevax dans le forum Langage
    Réponses: 3
    Dernier message: 25/03/2008, 13h19
  5. Besoin d'aide lié à un fichier xml et un tableau a charger..
    Par jjs dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/07/2005, 14h03

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