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 :

faire référence à une celulle pour une boucle horizontal [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    agent de maitrise
    Inscrit en
    Avril 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : agent de maitrise
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 23
    Points : 24
    Points
    24
    Par défaut faire référence à une celulle pour une boucle horizontal
    bonjour

    j'ai un probléme avec une ligne de ma macro texte en bleu

    Si je remplace la partie en bleu par la cellule exacte exemple de la ligne en dessous elle s'éxecute trés bien.

    Sauf que j'ai absolument besoin d'avoir quelque chose qui fait référence à ligne1 et la col + 2

    merci par avance pour vos réponses

    philippe

    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
    Sub miseajoursuivistock()
    
    
    Dim i As Integer
    'recherche de la ligne active
    On Error Resume Next
    i = Application.WorksheetFunction.Match(CLng(Date), Range("b:b"), 0)
    If i = 0 Then i = 4
    
    Range("b" & i).Activate
    
        Dim ligne As String
        Dim ligne1 As String
        Dim Col As String
           
    ligne = ActiveCell.Row
        
      Cells(ligne, 3).Value = "1"
        
    'mise en page pour les 15 jours à venir
    
    Do While Cells(ligne, 2).Value <> Cells(ligne, 2).Value = Date + 15
    
    Cells(ligne + 1, 3).Value = Cells(ligne, 3).Value + 1
    ligne = ligne + 1
    Loop
    
     'on recherche les besoins par référence et date
       
       ligne = ActiveCell.Row
       ligne1 = 3
       ligne2 = 5
       Col = 2
        
       
        With Worksheets("suivi des stocks")
           Do While .Cells(ligne2, Col + 2).Value <> "203"
           
           
         ligne = ActiveCell.Row
        ligne1 = 3
         Do While Cells(ligne, 3) <> "15"
         
         
    '.Cells(ligne, Col + 4).Value = Evaluate("SUMPRODUCT(('contrôle running liste'!$g$3:$g$120)*('contrôle running liste'!$d$3:$d$120= cells(ligne1, col + 2).value *(INT('contrôle running liste'!$i$3:$i$120)=$B" & ligne & "))")
    Cells(ligne, Col + 4).Value = Evaluate("SUMPRODUCT(('contrôle running liste'!$g$3:$g$120)*('contrôle running liste'!$d$3:$d$120=l$3)*(INT('contrôle running liste'!$i$3:$i$120)=$B" & ligne & "))")
    
    ligne = ligne + 1
    Loop
    Col = Col + 4
    Loop
    
    End With
    
    End Sub

  2. #2
    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
    Dans ton Dim, tu définis les deux variables concernées comme des String (chaines de caractère).
    Pour que ça marche, il faut les déclarer en numérique. Dans ton cas, un type "Integer" devrait suffire (à mettre à la place des deux String).
    Tant que tu y es, fais le aussi pour la variable "ligne" et déclare la variable ligne2.

    Tu vas sans doute aussi avoir un problème avec tes "Loop".

    Autre détail : dans le nom de tes variables, essaye de respecter la case. Evite d'écrire ton "Col" parfois tout en minuscules et parfois avec une majuscule.

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 987
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 987
    Points : 29 031
    Points
    29 031
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    j'ai un probléme avec une ligne de ma macro texte en bleu
    Je dois avoir un problème avec les couleurs car je ne détecte pas le texte en bleu.
    Cependant le code étant numéroté entre les balises, il serait plus intéressant de simplement donner le numéro de la ligne concernée.

  4. #4
    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 Philippe Tulliez Voir le message
    Je dois avoir un problème avec les couleurs car je ne détecte pas le texte en bleu.
    Regarde mieux ligne 45.

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 987
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 987
    Points : 29 031
    Points
    29 031
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Regarde mieux ligne 45.
    Ah oui, si en plus il faut bouger la barre horizontale.

  6. #6
    Membre à l'essai
    Homme Profil pro
    agent de maitrise
    Inscrit en
    Avril 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : agent de maitrise
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 23
    Points : 24
    Points
    24
    Par défaut
    bonjour Menhir et Philippe,

    Menhir
    j'ai corrigé les majuscules et j'ai essayé avec "Integer" ça ne change rien.

    je vous ai mis en piéce joint le fichier je pense que ça sera plus pratique, je suis vraiment à la ramasse sur le VBA.

    merci de votre aide

    philippe
    Fichiers attachés Fichiers attachés

  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 Philippe87420 Voir le message
    j'ai corrigé les majuscules et j'ai essayé avec "Integer" ça ne change rien.
    Jette un oeil dans l'aide VBA Excel à la structure des boucles While et Loop et corrigent-les dans ton code.
    Je trouve aussi qu'il est bizarre qu'il n'y ait pas de "." devant le Cells qui suit le "=".

    Quelle est l'erreur générée ? Sur quelle ligne de code ?
    Quelle est la valeur de tes variables col et ligne1 lorsque le code génère une erreur ?
    Es-tu sûr que ça marche si tu remplaces col et ligne1 par des valeurs ?

    J'ai l'impression (je peux me tromper) que tu as récupéré un bout de code et que tu essayes de l'adapter sans trop savoir ce que tu fais.
    A mon avis, tu devrais suivre les conseils de Johnatan Livingston le goéland : avant de vouloir faire des looping, apprendre le vol à l'horizontal.
    Bref, commencer par un didacticiel pour apprendre les bases du VBA avant de commencer à développer une appli.

  8. #8
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Beaucoup de boucles alors qu'on pourrait faire autrement
    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
    Option Explicit
     
    Sub MiseAjourSuiviStock()
    Dim LastCol As Integer, j As Integer
    Dim i As Long
     
    Application.ScreenUpdating = False
    With Worksheets("suivi des stocks")              'With Feuil2
        i = Application.WorksheetFunction.Match(CLng(Date), .Range("B:B"), 0)
        If i >= 7 Then
     
            With .Cells(i, 3).Resize(15, 1)
                .Formula = "=ROWS($" & i & ":" & i & ")"
                .Value = .Value
            End With
     
            LastCol = .Cells(6, .Columns.Count).End(xlToLeft).Column
            For j = 4 To LastCol Step 4
                If .Cells(5, j) <> 203 Then
                    .Cells(i, j + 2).Resize(14, 1).Formula = "=SUMPRODUCT(('contrôle running liste'!$G$3:$G$120)*('contrôle running liste'!$D$3:$D$120=" & .Cells(3, j).Address & ")*(INT('contrôle running liste'!$I$3:$I$120)=$B" & i & "))"
                    .Cells(i, j + 2).Resize(14, 1).Value = .Cells(i, j + 2).Resize(14, 1).Value
                End If
            Next j
     
        End If
    End With
    End Sub

  9. #9
    Membre à l'essai
    Homme Profil pro
    agent de maitrise
    Inscrit en
    Avril 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : agent de maitrise
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 23
    Points : 24
    Points
    24
    Par défaut
    bonjour,

    merci pour vos réponses, le code de Mercatog fonctionne bien. je reconnais que je navigue un peut à vue, je n'ai que 2 jours de formation de base en vba.

    merci à vous pour votre aide bien précieuse

    cordialement

    philippe

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

Discussions similaires

  1. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 13h59
  2. Réponses: 4
    Dernier message: 15/10/2009, 14h33
  3. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 14h35
  4. [VBA Excel] Appliquer une macro sur une celulle contenant une valeur
    Par tchauviere dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/01/2008, 11h21
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 14h48

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