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 :

is not nothing


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut is not nothing
    Bonjour,

    Je ne maitrise pas bien les sélections de plage....

    J'ai un souci avec "Nothing".

    Dans mon classeur, j'ai 52 feuilles (=52 semaines). Dans chaque feuille, il y a une série de données (des noms de personnes, leur adresse, etc...). Je vais dans chaque feuille, si je ne trouve un nom, je le mets dans la feuille "Total". Si le nom existe déjà, je ne le mets pas dans la feuille "Total", et je continue sur chaque feuille et sur toutes les feuilles. C'est un code adapté d’un ancien post (merci gFZT82 ). Ci joint le 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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    Sub Totalsemaine()
     
     
    Dim DerligR1 As Long
    Dim DerligR2 As Long
    Dim MaPlage As Range
    Dim DerniereLigne As Integer
    Dim ajout As Integer
    Dim nb As Integer
    Dim j As Integer
     
     
    nb = Worksheets.Count
     
    For j = 2 To nb ' - 1
     
     ActiveWorkbook.Worksheets(j).Tab.ColorIndex = 3
     ActiveWorkbook.Worksheets(j).Select
     
    ajout = 0
     
    With Sheets("S " & j - 1)
        DerligR1 = .Range("b" & .Rows.Count).End(xlUp).Row
    End With
     
    With Sheets("Total")
        DerligR2 = .Range("a" & .Rows.Count).End(xlUp).Row
    Set MaPlage = .Range(.Cells(1, 1), .Cells(DerligR2, 1))
    End With
     
     
    For i = 2 To DerligR1
        With MaPlage
        Set c = .Find(Sheets("S " & j - 1).Range("b" & i), LookIn:=xlValues, lookat:=xlWhole)
     
     
     
            If c Is Nothing Then
            ajout = ajout + 1
     
     
            'DerniereLigne = Sheets("Total").Range("a65536").End(xlUp).Row
            Sheets("Total").Cells(DerligR2 + ajout, 1) = Sheets("S " & j - 1).Cells(i, 2)
            Sheets("Total").Cells(DerligR2 + ajout, 2) = Sheets("S " & j - 1).Cells(i, 13)
            Sheets("Total").Cells(DerligR2 + ajout, 3) = Sheets("S " & j - 1).Cells(i, 30)
               ' With Sheets("S 1")
     
                   ' .Range(.Cells(DerniereLigne + 1, 2), .Cells(DerniereLigne + 1, 2)).Copy Destination:=Sheets("Total").Cells(i, 1)
                   '  .Range(.Cells(DerniereLigne + 1, 13), .Cells(DerniereLigne + 1, 13)).Copy Destination:=Sheets("Total").Cells(i, 2)
     
               ' End With
            End If
     
     
        End With
    Next i
     
     
    Next j
     
    MsgBox ("Fini")
     
    End Sub
    En fait, je me suis aperçu que certains noms étaient présents en semaine 3 avec une adresse, mais qu'en semaine 40, leur adresse avait changée...donc, il n'y avait pas de mise à jour puisqu'avec mon code, le nom était "sauté".

    Donc j'ai essayé de rajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
             If c Is Not Nothing Then
                Sheets("Total").Cells(DerligR2, 3) = Sheets("S " & j - 1).Cells(i, 30)
            End If
    dans ma boucle, histoire que si le nom est trouvé, on met la dernière adresse...

    J'ai donc essayé avec ce code, il ne marche pas, j'ai essayé avec , marche pas..

    Il y a certainement une instruction spécifique (mais je ne la connais pas.....)

    Une idée, ?

    Merci,

    A+

  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
    Une adaptation du 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
    Sub TotalSemaine()
    Dim DerligR1 As Long, DerligR2 As Long, i As Long
    Dim j As Integer
    Dim c As Range
    Dim Sh As Worksheet
     
    Application.ScreenUpdating = False
    For j = 2 To Sheets.Count
        Worksheets(j).Tab.ColorIndex = 3
     
        Set Sh = Worksheets("S " & j - 1)
        DerligR1 = Sh.Range("B" & Sh.Rows.Count).End(xlUp).Row
     
        With Sheets("Total")
            DerligR2 = .Range("a" & .Rows.Count).End(xlUp).Row
     
            For i = 2 To DerligR1
                Set c = .Range("A:A").Find(Sh.Range("B" & i), LookIn:=xlValues, lookat:=xlWhole)
     
                If c Is Nothing Then
                    DerligR2 = DerligR2 + 1
                    .Range("A" & DerligR2) = Sh.Range("B" & i)
                    .Range("B" & DerligR2) = Sh.Range("M" & i)
                    .Range("C" & DerligR2) = Sh.Range("AD" & i)
                Else
                    If .Range("B" & c.Row) <> Sh.Range("M" & i) Then .Range("B" & c.Row) = Sh.Range("M" & i)
                    If .Range("C" & c.Row) <> Sh.Range("AD" & i) Then .Range("C" & c.Row) = Sh.Range("AD" & i)
                    Set c = Nothing
                End If
     
            Next i
        End With
     
        Set Sh = Nothing
    Next j
     
    MsgBox "Traitement terminé"
    End Sub

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Merci mercatog,

    C'est dans des codes comme ça que je vois qu'il me reste beaucoup à apprendre...., ton code est super génial , Merci !!!!

    J'ai déjà rencontré des utilisations de code avec ce fameux "Sh"....tu n'aurai pas un tuto qui puisse m'éclairer sur l'utilisation de ce code ?????

    Je ne comprends pas..... et j'aime comprendre ce qui se passe.....

    Je ne cloture pas pour l'instant en attendant ta réponse...

    Merci d'avance

    A+

  4. #4
    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
    Sh est une variable objet de type worksheet instanciée par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Sh=Worksheets("S " & j)
    Pour ne pas à chaque fois travailler avec Worksheets("S " & j)... (Tu peux l'appeler comme tu veux Sh, X ou Y)

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Par défaut
    Génial mercatog,

    Je pense avoir compris

    Merci encore,

    A+ pour de nouvelles aventures

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

Discussions similaires

  1. Is Not Nothing Comment ca marche?
    Par parp1 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/06/2018, 09h38
  2. [XL-2003] Explication de code If Not Intersect .. is Nothing
    Par Alfred23 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/10/2011, 09h33
  3. probleme not nothing ou nothing
    Par casefayere dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/02/2009, 19h07
  4. Component not found
    Par Pm dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/01/2003, 14h40
  5. "ALTERER" une col. NULL en NOT NULL - Int
    Par Gandalf24 dans le forum SQL
    Réponses: 2
    Dernier message: 28/12/2002, 00h07

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