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 :

Ecriture dans une feuille en fonction de la présence d'une donnée dans une autre


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 79
    Points : 35
    Points
    35
    Par défaut Ecriture dans une feuille en fonction de la présence d'une donnée dans une autre
    'bonjour
    'soit 2 feuilles synthèse et parametrage
    'sur la feuille parametrage il y a dejà une base de données construite a l'aide
    'des données de la feuille synthèse a mettre a jour
    'sur la feuile synthèse il y a un tableau
    'je veux faire la chose suivante :
    '1)verifier si le numero en cellule A(i) de ma feuille synthèse est present sur ma feuille
    'de parametrage si tel est le cas on ne fait rien
    'mai si ce numero n'existe pas sur ma feuille de parametrage alors j'ajoute la ligne correspondante
    'sur mafeuille parametrage

    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
    Sub tableau()
    Dim Cel As Range, Lg As Byte
    Dim i As Long, L As Long, k As Long
    Dim j As Long, nombre As Long
    Dim lastrow As Long
       Application.ScreenUpdating = False
        k = Sheets("Synthèse").Cells.Find("*", , , , xlByRows, xlPrevious).Row
         lastrow = Sheets("parametrage").Cells.Find("*", , , , xlByRows, xlPrevious).Row
        With Sheets("parametrage")
     
            For Each Cel In .Range("a2:a171")
                With Sheets("Synthèse")
                    For i = 6 To k
                        If .Cells(i, "A") <> Cel Then
                        worksheets("parametrage").Cells(lastrow + 1, 1).Value = _
                        Sheets("Synthèse").Cells(i, 1).Value
                        worksheets("parametrage").Cells(lastrow + 1, 2).Value = _
                        Sheets("Synthèse").Cells(i, "D").Value
                        worksheets("parametrage").Cells(lastrow + 1, 3).Value = _
                        Sheets("Synthèse").Cells(i, "E").Value
                        End If
                    Next
                End With
     
            Next Cel
        End With
    End Sub
    'et j 'ai ecris le code ci-dessus mais il est faux
    'comment le corriger?
    'merci bien

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Points : 730
    Points
    730
    Par défaut
    Peux tu nous décrire ce qui ne marche pas.
    - laisser l'écran se mettre à jour
    - lancer en debug pas à pas
    que se passe t-il?
    où est l'erreur?

    PPz

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 79
    Points : 35
    Points
    35
    Par défaut le tableau parametré
    disons qu'il n'ya pas d'erreur
    sur ce code c'est juste qu'il est incomplet
    du coup il ne fait pas ce que je veux

    (je veux comparer deux colonnes de deux feuilles differentes et si je trouve qu'il manque une valeur sur la colonne de la feuille parametrage alors j'ajoute
    les cellules A,D et E de la ligne de la feuille "synthèse" correspondante sur la feuille parametrage)

    merci bien

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Points : 730
    Points
    730
    Par défaut
    Pourquoi .Range("a2:a171") alors que l'on ajoute des lignes à "Parametrage" ?

    PPz

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 79
    Points : 35
    Points
    35
    Par défaut le tableau parametré
    c'est une erreur
    je dois normalement mettre

    .Range("a2:a" & k) ou k es la derniere ligne du tableau

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Points : 730
    Points
    730
    Par défaut
    Quand tu ajoutes une ligne il faudrait ensuite incrémenter lastrow

    PPz

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 79
    Points : 35
    Points
    35
    Par défaut tableau de parametrage
    donc si j'ajoute l'incrementation tout devient correcte?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    donc si j'ajoute l'incrémentation tout devient correct?
    A priori, cela semble évident, et de plus, il suffit d'essayer et c'est à vous à le faire.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 79
    Points : 35
    Points
    35
    Par défaut tableau de parametrage
    j'ai essayé ça ne marche pas

    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
    Sub tableau()
    Dim Cel As Range, Lg As Byte
    Dim i As Long, L As Long, k As Long
    Dim j As Long, nombre As Long
    Dim lastrow As Long
       Application.ScreenUpdating = False
        k = Sheets("Synthèse").Cells.Find("*", , , , xlByRows, xlPrevious).Row
         lastrow = Sheets("parametrage").Cells.Find("*", , , , xlByRows, xlPrevious).Row
        With Sheets("parametrage")
     
            For Each Cel In .Range("a2:a171")
                With Sheets("Synthèse")
                    For i = 6 To k
                        If .Cells(i, "A") <> Cel Then
                        Worksheets("parametrage").Cells(lastrow + 1, 1).Value = _
                        Sheets("Synthèse").Cells(i, 1).Value
                        Worksheets("parametrage").Cells(lastrow + 1, 2).Value = _
                        Sheets("Synthèse").Cells(i, "D").Value
                        Worksheets("parametrage").Cells(lastrow + 1, 3).Value = _
                        Sheets("Synthèse").Cells(i, "E").Value
                        End If
     
                    Next
                End With
                 lastrow = lastrow + 1
            Next Cel
        End With
    End Sub
    merci bien

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Points : 730
    Points
    730
    Par défaut
    disons qu'il n'y a pas d'erreur
    sur ce code c'est juste qu'il est incomplet
    du coup il ne fait pas ce que je veux
    Pour moi quand le code ne fait pas ce que je veux, il y a une erreur.

    Tant que tu nous écrira pas ce qui se passe, ce qui fonctionne comme tu veux et ce qui ne fonctionne pas comme tu veux on avancera très lentement.

    Pour finir, il me semble que l'instruction n'est pas placée au bon endroit.

    Bonne journée
    PPz

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    En effet, comme précisé par PPz78, ce ne doit pas être le bon endroit de plus l'adresse de la cellule ne peut être acceptée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sheets("Synthèse").Cells(i, 1).Value
                        Worksheets("parametrage").Cells(lastrow + 1, 2).Value = _
                        Sheets("Synthèse").Cells(i, "E"4).Value
                        Worksheets("parametrage").Cells(lastrow + 1, 3).Value = _
                        Sheets("Synthèse").Cells(i, "E"5).Value
    'supprimer ce qui est en rouge, ajouter ce qui est en bleu 
    et au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sheets("Synthèse").Cells(i, "E"5).Value 'supprimer ce qui est en rouge, ajouter ce qui est en bleu 
         End If
                        
         Next
        End With
         lastrow = lastrow + 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sheets("Synthèse").Cells(i, "E"5).Value
    lastrow = lastrow + 1
        End If
                         
        Next
      End With

Discussions similaires

  1. Changement dans une feuille en fonction de 2 valeurs
    Par delph_le dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/06/2008, 15h24
  2. ordonner les données d'une feuille dans une macro
    Par meuah dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 21/05/2008, 15h27
  3. UPDATE en fonction de la présence d'un num dans une autre table
    Par Zak Blayde dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 19/07/2007, 11h41
  4. [VBA-E]transposer des données d'une feuille dans une autre
    Par lio62 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 26/03/2007, 18h47
  5. placer des dates dans des feuilles en fonction du mois
    Par Jerez62 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/12/2006, 10h05

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