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 :

Problème test contenu cellule VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 75
    Points : 48
    Points
    48
    Par défaut Problème test contenu cellule VBA
    Bonjour, pour traiter une base de données, je cherche à tester le contenu de la première colonne, pour chacune des colonnes. Selon ce test, je supprime telles ou telles colonnes.

    Si le contenu est INV, dans ce cas je veux supprimer les colonnes F et G.

    Si le contenu est INC, dans ce cas je veux supprimer les colonnes D et E.

    Mais avec le programme que j'ai fait, il supprime les 4 colonnes quelle que soit la valeur.

    Pourriez-vous me dire ce qui cloche svp ? Merci

    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
    Sub macro_sinistres()
     
    Dim Var
    Dim i As Integer
        For i = 2 To 100
            Var = ActiveSheet.Range("A" & i).Value
            If Var = INV Then
            Columns("F:F").Delete Shift:=xlToLeft
            Columns("G:G").Delete Shift:=xlToLeft
            End If
            If Var = INC Then
            Columns("D:D").Delete Shift:=xlToLeft
            Columns("E:E").Delete Shift:=xlToLeft
            End If
        Next i
     
    End Sub

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 652
    Points : 1 116
    Points
    1 116
    Par défaut
    Bonjour

    C'est normal: tu boucles

    Donc chaque que tu auras "INC" ou "INV" yu vas supprimmer 2 colonnes
    si tu supprimes D et E , F et G vont être renommées D et E...

    donc si tu as au moins 1 "inv" tu supprimes F,G puis après si tu as au moins 1 "inc", tu supprimes D E et tu n'as pas besoin de boucler

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if application.countif (range("A2:A100"),"INV")>0 then...

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 75
    Points : 48
    Points
    48
    Par défaut
    bah oui mais en fait selon chaque ligne, je veux garder D et E si jai INC et F et G si jai INV. avec ta proposition il supprimera tout car jai environ 600 000 lignes.

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 652
    Points : 1 116
    Points
    1 116
    Par défaut
    audepart
    Si le contenu est INV, dans ce cas je veux supprimer les colonnes F et G.
    Si le contenu est INC, dans ce cas je veux supprimer les colonnes D et E.

    maintenant
    je veux garder D et E si jai INC et F et G si jai INV.


    OUI ???

    Autre chose
    ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns("F:F").Delete Shift:=xlToLeft
    détruit Toute la colonne ne serait ce pas plutôt les cellules des colonnes DEFG ou sur la m^me ligne il y a colonne A MIn ou INV ? et que supprime-t-on?

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 75
    Points : 48
    Points
    48
    Par défaut
    en effet si INV je veux supprimer F et G, si INC je veux supprimer D et E.

    Et oui c'est le contenu de la colonne que je veux supprimer.

  6. #6
    Nouveau membre du Club
    Profil pro
    Ostéopathe
    Inscrit en
    Juillet 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ostéopathe

    Informations forums :
    Inscription : Juillet 2010
    Messages : 26
    Points : 37
    Points
    37
    Par défaut Supprimer la colonne ou le contenu de la cellule
    Bonjour

    en effet si INV je veux supprimer F et G, si INC je veux supprimer D et E.

    Et oui c'est le contenu de la colonne que je veux supprimer
    Petite précision, ne veux-tu pas plutôt dire que lorsque tu trouves INC tu veux supprimer les cellules de la ligne appartenant aux colonnes F et G et lorsque tu trouves INV les cellules de la ligne appartenant à D et E ?

    Parce que ton code du premier poste supprime les colonnes entières. En fait ne fait pas que supprimer 4 colonnes, il en supprime beacoup plus. A chaque fois que tu trouves INC tu en supprime 2 et à chaque fois que tu trouves INV tu en supprimes 2. Tu dis avoir 600000 lignes. Si chaque ligne a soit la valeur INC soit la valeur INV alors ton code supprime exactement 1200000 colonnes.

    Essaie ce code (pas testé) qui te supprime les cellules plutôt que les colonnes
    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 macro_sinistres()
        Dim i As Integer
     
        With ActiveSheet
            'Parcours les lignes 2 à 100
            For i = 2 To 100
     
                'Efectue une action différente selon la valeur de la cellule
                Select Case .Range("A" & i).value
     
                    Case INV
                        'Supprime la cellule de la colonne G
                        .Range("G" & i).Delete Shift:=xlToLeft
                        'Supprime la cellule de la colonne F
                        .Range("F" & i).Delete Shift:=xlToLeft
                        'Il faut d'abord supprimer G car les cellules du reste de la ligne à droite vont se décaler vers la gauche.
                        'Tu peux aussi supprimer la cellule en F et à nouveau la cellule en F qui sera en réalité la ellule en G décalée vers la gauche suite à la suppression de la cellule en F
     
                    Case INC
                        .Range("E" & i).Delete Shift:=xlToLeft
                        .Range("D" & i).Delete Shift:=xlToLeft
     
                End Select
            Next i
        End With
    End Sub
    L'utilisation with t'évite de faire appel à l'objet ActiveSheet à chaque occurence de la boucle for et pour chaque appel de range

    Tiens nous au courant

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 75
    Points : 48
    Points
    48
    Par défaut
    merci pour vos réponses, nous avons repensé la chose autrement car nos outils sont en pleine conception.

    Cordialement,

    Julien

Discussions similaires

  1. [VBA-E]Contenu cellule dans array
    Par Darkhin dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/02/2007, 02h31
  2. [VBA-E] contenu cellule excel > 255 caractères ? Comment ?
    Par Lenzo dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 09/02/2007, 01h04
  3. [VBA-E] Problème d'offset cellule
    Par GI_GI dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/01/2007, 10h47
  4. [VBA - Excel] Problème de deux cellules sur l'evenement OnChange
    Par champmart dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/01/2007, 17h06
  5. [VBA] problème choix de cellule dans feuille excel
    Par beegees dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/02/2006, 10h48

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