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 :

For i to valeur d'une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    novembre 2021
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : novembre 2021
    Messages : 22
    Points : 9
    Points
    9
    Par défaut For i to valeur d'une cellule
    Bonjour à tous,

    J'aimerais savoir si c'est possible d'utiliser la fonction For i to ... avec une valeur d'une cellule à sélectionner.
    J'ai essayé sans succès l'erreur 13 s'affiche alors.

    J'ai également un problème avec ma formule : .Range("A" & iRowRack_R) = cell.Value, l'erreur 1004 s'affiche.

    Ci-dessous mon 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
    With Worksheets("Réalisation_Audit")
     
    For Each cell In .Range("A1:A100")
        If cell.Value <> "" Then
     
     
            With Worksheets("Actions_en_cours")
     
                For i = 1 To Worksheets("Réalisation_Audit").Range("A1:A100").Value
                    iRow_Rack_R = .Range("A" & .Rows.Count).End(xlUp).Row + 1
                    .Range("A" & iRowRack_R) = cell.Value
                Next i
                cell.Font.ColorIndex = 3
     
     
            End With
        End If
    Next
    End With
    Merci pour votre aide !

  2. #2
    Membre chevronné
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    mars 2007
    Messages
    889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : mars 2007
    Messages : 889
    Points : 1 855
    Points
    1 855
    Par défaut
    Bonsoir

    Il s'agit de deux petites fautes d'inattention.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 1 To Worksheets("Réalisation_Audit").Range("A1:A100").Value
    Il ne faut prendre la valeur que d'UNE seule cellule (pas d'une plage).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("A" & iRow_Rack_R) = cell.Value
    Le signe _ a été oublié dans le nom de la variable.


    En espérant que cela aide

    Bonne nuit

    Pierre Dumas
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    novembre 2021
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : novembre 2021
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    Merci pour votre réponse. Mon problème était que la valeur du i varié en fonction des valeurs de toute une colonne.
    Je ne pouvais donc pas le figé à une cellule. J'ai donc essayé de tourner la macro d'une autre façon mais celle-ci ne fonctionne tjrs pas.
    Si vous avez une idée du problème :

    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
     
    With Worksheets("Réalisation_Audit")
     
    For Each cell In .Range("L1:L100")
    If cell.Value <> "" Then
     
     
    With Worksheets("Actions_en_cours")
     
    For i = 1 To cell.Value
    iRow_Rack_R = .Range("A" & .Rows.Count).End(xlUp).Row + 1
    .Range("A" & iRow_Rack_R) = Worksheets("Réalisation_Audit").Range("A1:A100")
    Next i
    cell.Font.ColorIndex = 3
     
     
    End With
    End If
    Next
    End With
    Merci pour votre aide

  4. #4
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA
    Inscrit en
    septembre 2005
    Messages
    1 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2005
    Messages : 1 827
    Points : 3 367
    Points
    3 367
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Concernant ton code quelques remarques :

    Perso je n'utilise pas WITH pour passer d'une feuille à l'autre. Il y a plusieurs façons de faire dont la plus simple que l'on peut obtenir de l'enregistreur de macro est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Sheets("Réalisation_Audit").Select
    '...
        Sheets("Actions_en_cours").Select
    le "For Each" me parrait peu pratique car l'on fait évoluer une cellule à une autre en descendant un simple "For" ferait l'affaire.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Lign = 1 to 100
    If Cells (lign,12).value 
    ...
    12 est la valeur de la position dans alphabet (12 = L).

    Ensuite dans ton "For I" il y a deux choses qui me chiffonne
    - mettre une plage comme valeur d'arrivée n'est pas possible il faut faire dans ce cas 2 boucles imbriquées l'une dans l'autre
    - je n'ai pas vu où était utilisé la variable I dans la boucle For ... Donc l'utilité de la boucle For doit être bien expliquée car le n'ai pas compris à quoi cela sert

    Tiens nous au courant
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  5. #5
    Membre chevronné
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    mars 2007
    Messages
    889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : mars 2007
    Messages : 889
    Points : 1 855
    Points
    1 855
    Par défaut
    Bonsoir

    Citation Envoyé par bonjour0555 Voir le message
    Merci pour votre réponse. Mon problème était que la valeur du i varié en fonction des valeurs de toute une colonne.
    Je ne pouvais donc pas le figé à une cellule. J'ai donc essayé de tourner la macro d'une autre façon mais celle-ci ne fonctionne tjrs pas.
    Si vous avez une idée du problème :
    Qu'est ce qui ne fonctionne pas ? Un message d'erreur, un résultat non attendu, rien ne se passe, ... ? Ce serait bien d'expliquer. Je suis contributeur, pas devin

    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
     
    With Worksheets("Réalisation_Audit")
     
    For Each cell In .Range("L1:L100")
    If cell.Value <> "" Then
     
     
    With Worksheets("Actions_en_cours")
     
    For i = 1 To cell.Value
    iRow_Rack_R = .Range("A" & .Rows.Count).End(xlUp).Row + 1
    .Range("A" & iRow_Rack_R) = Worksheets("Réalisation_Audit").Range("A1:A100")
    Next i
    cell.Font.ColorIndex = 3
     
     
    End With
    End If
    Next
    End With
    Merci pour votre aide
    Sans prendre le temps de bien analyser votre code, je peux dire que :
    la ligne 11 pourrait être mis en ligne 9. D'après ce que je comprends, cela ne sert à rien qu'elle soit dans une boucle.
    la ligne 12 me parait difficile à fonctionner : une cellule ne peut pas être égale à cent cellules.

    En espérant que cela aide

    Bonne soirée

    Pierre Dumas
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    novembre 2003
    Messages
    18 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 18 959
    Points : 55 090
    Points
    55 090
    Billets dans le blog
    128
    Par défaut
    Salut.

    Comme souvent, il serait intéressant d'expliquer en français ce que tu souhaites réaliser. Il y a de fortes chances que ton code pourrait être simplifié, mais comme on ne sait pas exactement ce que tu souhaites réaliser, on ne peut que mettre des rustines là où cela fuit, mais c'est le meilleur moyen d'avoir un code bordélique et non maintenable.



    Citation Envoyé par Igloobel Voir le message
    [...]le "For Each" me parrait peu pratique car l'on fait évoluer une cellule à une autre en descendant un simple "For" ferait l'affaire.[...]
    Pourquoi? Si l'on n'a pas besoin de l'index de la boucle, un For Each r in Range("a1:a100") peut parfaitement faire l'affaire, non?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    avril 2002
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : avril 2002
    Messages : 3 849
    Points : 8 461
    Points
    8 461
    Par défaut
    Salut

    Tu veux que i prenne alternativement le contenu de chaque cellule contenu de A1 à A100 si j'ai bien compris

    Quelque Chose comme ça peut-être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim i as Integer
     
    With Thisworkbook.Worksheets("Réalisation_Audit")
     
       For Each cell In .Range("A1:A100")
          i = cint(cell.value)
          '... Suite du code utilisant la valeur de i
       Next
    End with
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    novembre 2021
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : novembre 2021
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    Bonjour à tous,

    Merci pour vos nombreuses réponses effectivement je n'étais pas très clair.
    Je vais essayer de vous expliquer plus précisément mon problème.

    Dans ma feuille Réalisation_Audit dans la colonne A des numéros concernant un emplacement sont présents (chiffre).
    Dans la même feuille dans la colonne L sont présents le nombre d'outil défectueux (chiffre).

    J'aimerais que dans la feuille Actions_en_cours colonne A le numéro de l'emplacement (colonne A feuille réaliation_Audit soit reporté le nombre de fois qu'il a d'outil défectueux dans la colonne L de la feuille Réalisation_Audit.

    Feuille Réalisation Audit :
    Nom : Captureee.PNG
Affichages : 25
Taille : 8,1 Ko

    Feuille report dans Action en cours (12 lignes) :
    Nom : Capturezz.PNG
Affichages : 24
Taille : 4,9 Ko

    J'espère avoir été plus clair.

    Merci d'avance

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    novembre 2021
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : novembre 2021
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    J'ai réussi à résoudre mon problème merci de votre aide
    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
     
     
    With Worksheets("Réalisation_Audit")
     
    For Each cell In .Range("L4:L100")
    If cell.Font.ColorIndex <> 3 And (cell.Value <> "") Then
     
    For i = 1 To cell.Value
    With Worksheets("Actions_en_cours")
     
    iRow_Rack_R = .Range("A" & .Rows.Count).End(xlUp).Row + 1
    .Range("A" & iRow_Rack_R) = Worksheets("Réalisation_Audit").Range("A4:A100").Value
     
     
     
    End With
    Next
    End If
    Next
    End With

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

Discussions similaires

  1. [XL-2016] Aller rechercher la valeur d'une cellule adjacente dans une boucle for
    Par d.bargibant dans le forum Macros et VBA Excel
    Réponses: 35
    Dernier message: 19/12/2018, 21h08
  2. Chercher dans les valeurs d'une cellule dans une boucle For Next
    Par Runsh63 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 28/09/2011, 15h30
  3. [VB.NET] Recuperer la valeur d'une cellule d'un DataTable
    Par graphicsxp dans le forum Windows Forms
    Réponses: 2
    Dernier message: 29/03/2005, 10h59
  4. recuperer la valeur d une cellule
    Par Invité(e) dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/01/2005, 18h05
  5. [C#] [Automation Word] Récupérer la valeur d'une cellule
    Par Ditch dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/06/2004, 15h57

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