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 :

[E-03] Chercher la ligne correspondante


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de PUARAI
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 191
    Par défaut [E-03] Chercher la ligne correspondante
    Bonjour, à tous

    J'utilise actuellement "ecxel 2003 Pro
    Je voudrais faire une chose mais je n'arrive pas à trouver le code pour ça.
    Voici mon premier code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    Sub CAHIERSECURITE()
    Application.ScreenUpdating = False
        ligne = Worksheets("LISTE").Range("NBR").Value + 2
        Dim numero As String
        reponse = MsgBox(" Voulez-vous entrer un nouveau numéro de cahier de BON de SORTIE ?", vbYes)
        numero = InputBox("numero du premier bon du nouveau cahier ??")
        With Application.ThisWorkbook.Sheets("LISTE")
        .Visible = xlSheetVisible
        .Activate
    End With
        Worksheets("LISTE").Select
        For i = 0 To 49
        celluleactive = "b" & ligne
        Range(celluleactive).Offset(i, 0).FormulaLocal = numero + i
        Select Case reponse
        Case Else
        End Select
        Next i
        With Application.ThisWorkbook.Sheets("LISTE")
        .Visible = xlSheetHidden
        .Activate
    End With
        Worksheets("BON SORTIE SECURITE").Select
    Application.ScreenUpdating = True
    End Sub
    Ce code là me permet de rentrer une serie de chiffre dans la colonne B a partir de la cellule B2 grace a une formule dans la cellule est nommée "NBR" (=+NB(B2:B9851))
    Et une autre avec une formule dans la cellule est nommée "ligne" (=+EQUIV(AF1;B2:B9850;0)+3).
    Et ensuite j'ai est un deusieme code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    43
     
    Sub SORTIESAV()
    With Application.ThisWorkbook.Sheets("LISTE")
        .Visible = xlSheetVisible
        .Activate
    End With
    ActiveSheet.Unprotect
        Sheets("LISTE").Select
        [C65536].End(xlUp).Offset(1, 0).Select
        ActiveCell = Sheets("BON SORTIE SECURITE").[D12]
        Sheets("LISTE").[C2:H2].Sort key1:=Sheets("LISTE").[C2]
        [D65536].End(xlUp).Offset(1, 0).Select
        ActiveCell = Sheets("BON SORTIE SECURITE").[D15]
        Sheets("LISTE").[D2:H2].Sort key1:=Sheets("LISTE").[D2]
        [E65536].End(xlUp).Offset(1, 0).Select
        ActiveCell = Sheets("BON SORTIE SECURITE").[D17]
        Sheets("LISTE").[E2:H2].Sort key1:=Sheets("LISTE").[E2]
        [F65536].End(xlUp).Offset(1, 0).Select
        ActiveCell = Sheets("BON SORTIE SECURITE").[G17]
        Sheets("LISTE").[F2:H2].Sort key1:=Sheets("LISTE").[F2]
        [G65536].End(xlUp).Offset(1, 0).Select
        ActiveCell = Sheets("BON SORTIE SECURITE").[J17]
        Sheets("LISTE").[G2:H2].Sort key1:=Sheets("LISTE").[G2]
        [H65536].End(xlUp).Offset(1, 0).Select
        ActiveCell = Sheets("BON SORTIE SECURITE").[G19]
        Sheets("LISTE").[H2:I2].Sort key1:=Sheets("LISTE").[H2]
        [K65536].End(xlUp).Offset(1, 0).Select
        ActiveCell = Sheets("BON SORTIE SECURITE").[G14]
        Sheets("LISTE").[K2:L2].Sort key1:=Sheets("LISTE").[K2]
        With Application.ThisWorkbook.Sheets("LISTE")
        .Visible = xlSheetHidden
        .Activate
    End With
        Sheets("BON SORTIE SECURITE").Select
        [D12].ClearContents
        [D15].ClearContents
        [D17].ClearContents
        [G17].ClearContents
        [J17].ClearContents
        [G19].ClearContents
        [G14:J15].ClearContents
        ActiveSheet.Protect
    End Sub
    En faite en gros ce que je voudrais faire c'est dés que j'utilise le deusieme code il faudrait qu'il cherche la ligne correspondante au numero du cahier deja entrer au depart avec mon premier code un exemple :
    je rentre mon numero de serie pour cahier de 1 à 50 et lorsque j'utilise le deusieme code au lieu de remplir dans l'ordre de 1 à 50 que je puisse renter n'importe quel numero et qu'il se mette automatiquement a la ligne ou se trouve le numero du cahier correspondant.
    Ce serais gentil de votre part,
    Merci d'avance

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    je n'ai pas compris ce que tu veux mais, si tu veux, j'ai raccourci ton deuxième code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Sub SORTIESAV()
     
        With Sheets("LISTE")
        .Activate
        .Unprotect
        .[C65536].End(xlUp).Offset(1, 0) = Sheets("BON SORTIE SECURITE").[D12]
        .[C2:H2].Sort key1:=.[C2]
        .[D65536].End(xlUp).Offset(1, 0) = Sheets("BON SORTIE SECURITE").[D15]
        .[D2:H2].Sort key1:=.[D2]
        .[E65536].End(xlUp).Offset(1, 0) = Sheets("BON SORTIE SECURITE").[D17]
        .[E2:H2].Sort key1:=.[E2]
        .[F65536].End(xlUp).Offset(1, 0) = Sheets("BON SORTIE SECURITE").[G17]
        .[F2:H2].Sort key1:=.[F2]
        .[G65536].End(xlUp).Offset(1, 0) = Sheets("BON SORTIE SECURITE").[J17]
        .[G2:H2].Sort key1:=.[G2]
        .[H65536].End(xlUp).Offset(1, 0) = Sheets("BON SORTIE SECURITE").[G19]
        .[H2:I2].Sort key1:=.[H2]
        .[K65536].End(xlUp).Offset(1, 0) = Sheets("BON SORTIE SECURITE").[G14]
        .[K2:L2].Sort key1:=.[K2]
        .Visible = xlSheetHidden
        .Activate
    End With
    With Sheets("BON SORTIE SECURITE")
        .[D12].ClearContents
        .[D15].ClearContents
        .[D17].ClearContents
        .[G17].ClearContents
        .[J17].ClearContents
        .[G19].ClearContents
        .[G14:J15].ClearContents
        .Protect
    End With
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre confirmé Avatar de PUARAI
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 191
    Par défaut
    C'est gentil de ta part, c'est vrai que là il était un peu encombrant mon code, je te remerci encore,
    En faite si tu veux je peu mieux t'espliquer ce que je veux:
    Le premier code me permet de mettre une serie de chiffre de 1 a 50 dans la colonne A, avec le deuxieme code quand je valide le chiffre 2 par exemple se mette automatiquement dans la colonne B sur la meme ligne ou se trouve le chiffre 2 de la colonne A.
    je ne sais pas si je me suis mieux exprimer,
    Donc voila, merci encore

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    ou saisis-tu le chiffre 2 par exemple,dans un box, dans une cellule ? de quelle colonne ? quelle feuille ?

    En sachant ça, ça devrait pouvoir se faire
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre confirmé Avatar de PUARAI
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 191
    Par défaut Re :
    En faite voila j'ai deux feuilles, exemple : une qui s'appel "Trame" et la deuxieme feuille s'appel "Liste".
    Sur ma trame (feuille1) j 'ai un bouton de formulaire ou j'ai rattaché ma premiere macro qui pouvais me mettre une serie de chiffre dans la colonne A de la (feuille2) nommée Liste de 1 à 50.
    Puis Avec le deuxieme code sur ma feuille1 (trame) il y a une cellule, dés que j'écris un chiffres dedans par exemple le chiffre 2,
    dés que j' appuis sur un autre bouton de formulaire qui est rattaché a mon deuxieme code, mon chiffre 2 se met directement sur la feuille2 (Liste) dans la colonne B.
    Mais je veux un truc en plus je veux qu'il me mette directement en face du chiffre 2 de la colonne A.
    J'espere que je me suis exprimer,
    Merci encore

    Citation Envoyé par casefayere Voir le message
    ou saisis-tu le chiffre 2 par exemple,dans un box, dans une cellule ? de quelle colonne ? quelle feuille ?

    En sachant ça, ça devrait pouvoir se faire

  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 PUARAI et le forum
    [FONT=Verdana]Je ne comprends pas ce qu'est censé faire ton code[/FONT]
    ligne = Worksheets("LISTE").Range("NBR").Value + 2
    Je suppose NBR se réfèreà une cellule nommée ? dans ce cas,
    ligne = Range("NBR").Value + 2
    devrait suffire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Application.ThisWorkbook.Sheets("LISTE")
        .Visible = xlSheetVisible
        .Activate
    End With
        Worksheets("LISTE").Select
    Pourquoi resélectionner une feuille active ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(celluleactive).Offset(i, 0).FormulaLocal = numero + i
    ??? pourquoi pas simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(celluleactive).Offset(i, 0) = numero + i
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Select Case reponse
        Case Else
        End Select
    Je suppose que tu as limité de code fourni.Ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("LISTE").[D2:H2].Sort key1:=Sheets("LISTE").[D2]
    Comprend pas. surtout que tu fais la même en dégressif pour le nombre de cellules/colonnes. C'est un TCD je suppose, mais que veux-tu faire exactement ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Sheets("LISTE").Select
        [C65536].End(xlUp).Offset(1, 0) = Sheets("BON SORTIE SECURITE").[D12]
        ...
        [D65536].End(xlUp).Offset(1, 0).Select
    C'est des colonnes séparées, ou c'est par ligne que tu travailles ? dans ce cas, il vaux mieux n'avoir qu'une colonne de référence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Sheets("LISTE").Select
        [C65536].End(xlUp).Offset(1, 0) = Sheets("BON SORTIE SECURITE").[D12]
        ...
        range("D" & Sheets("LISTE").[C65536].End(xlUp).row)= Sheets("BON SORTIE SECURITE").[D15]
    A+

  7. #7
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    Comme je n'ai toujours pas compris, regardes ce code simplifié.

    j'ai mis dans la feuille liste en col A à partir de a2 les chiffres de 1 à 50
    sur la feuile 1, en "a1" j'ai écris un chiffre, essaie sur un fichier vierge et executes le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub essai()
    Dim plage As Range, cell As Range
    With Sheets("liste")
    Set plage = .Range("a2:a" & .Range("a65000").End(xlUp).Row)
    Set cell = plage.Find(Sheets("trame").Range("a1"))
    cell.Select
    End With
    End Sub
    si c'est ce que tu cherche, tu pourras adapter

    Bonne soirée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Si la cellule est vide alors supprimer la ligne correspondante
    Par dolin007 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 20/11/2009, 14h09
  2. Rechercher date dans colonne et renvoi la ligne correspondante
    Par rickgoz dans le forum Macros et VBA Excel
    Réponses: 36
    Dernier message: 28/10/2008, 18h29
  3. Chercher une ligne aléatoire dans un fichier texte
    Par pyopyo dans le forum Langage
    Réponses: 1
    Dernier message: 30/04/2008, 09h26
  4. Rechercher un nom puis supprimer la ligne correspondante
    Par john63 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/01/2008, 21h03
  5. ligne correspondante et cellule
    Par melodyyy dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 31/05/2007, 19h14

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