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 avec cells


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 6
    Par défaut problème avec cells
    bonjour tout le monde.

    je sollicite de l'aide concernant une macro que je suis en train de faire sur excel. j'ai un problème. en effet je cherche à écrire dans une cellule d'une feuille (ici "sgp") depuis les coordonnées d'une cellule d'une autre feuille. j'aurais donc besoin d'utiliser cells qui permet d'utiliser les coordonnées ligne et colonne mais le problème c'est que je n'y arrive pas. voici 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
    Private Sub SOL_Click()
     
     With Selection.Font
            .ColorIndex = xlAutomatic
            .TintAndShade = 0
        End With
        With Selection.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .Color = 49407
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
        Selection.Font.Bold = True
        ActiveCell.FormulaR1C1 = "SOL"
     
        adress = ActiveCell.Row
        F4 = Int((adress - 6) / 4)
        Na = adress - 6 - F4 * 4
        Nam = ActiveSheet.Cells(adress - Na, 1).Value
     
     
        dat = ActiveCell.Column
        datt = dat - 2
     
        td = dat + 1
     
        For j = 0 To 19
            If tableau(0, j) = Nam Then
                ini = tableau(1, j)
            End If
        Next
     
     
        MsgBox (ini)
     
        Worksheets("sgp").Range(Cells(td, 3)) = ini
     
     
     
        MsgBox (ini)
    End Sub
    Worksheets("sgp").Range(Cells(td, 3)) = ini pose problème et ne fonctionne pas. il me sort une erreur. si je mets juste Worksheets("sgp").Cells(td, 3) = ini le code tourne mais ne fonctionne pas (je ne retrouve pas ini dans sgp). si j'utilise un range("C3") par exemple ça marche cependant j'aimerais utiliser les coordonnées numériques. j'ai aussi utilisé quelques variantes comme Worksheets("sgp").Range(worksheets.Cells(td, 3)) = ini sans succès.

    je me suis aussi demandé si ça ne venait pas du fait que j'y suis allé un peu bourrin en écrivant ce code dans feuille 1 pour envoyer une variable vers sgp. j'ai donc écrit ,dans un module 2, la ligne qui permet d'envoyer la variable vers sgp et j'ai fait appel à cette fonction dans mon code mais le résultat reste identique: ça ne marche pas. (voici le code de la fonction placé dans le module 2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function sol(td, ini)
    Worksheets("sgp").range(Cells(td, 3)) = ini
     
     
    End Function
    j'ai bien évidement testé pas mal de variantes pour la fonction aussi mais rien à faire.
    je suis donc à la recherche de pistes.
    merci d'avance

  2. #2
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonsoir,
    je sais pas si ça va vous aller. Je pense que vous pouvez ainsi trouver les correspondances
    Je me positionne sur une feuille et le code prend à la fois l'adresse de la cellule active et sa valeur(si necessaire?) et transmet sur une autre page la valeur, dans la cellule correspondante en adresse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    With ActiveSheet
    Adresse = ActiveCell.Address
    AdValeur = ActiveCell.Value
    End With
    Sheets("Feuil2").Range(Adresse).Value = AdValeur
    End Sub
    cordialement

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 6
    Par défaut
    bonjour, merci pour votre réponse. malheureusement c'est pas vraiment ce que je cherche. en fait j'ai besoin d'avoir les lignes et en colonnes en valeur numérique car d'une feuille a l'autre les coordonnées des cellules ne seront pas identiques et suivront quelque chose de linaire. en gros la variable dans la cellule a la cordonnées ligne 2 colonne 3 vas aller sur une autre feuille mais en ligne 4 colonne 6 par exemple cependant derrière c'est pas moi qui dois dire au programme d'aller en B7 par exemple. c'est lui qui, en fonction des cellule libre s'adapte. mais justement comme c'est linaire, je peux faire deux trois calcule simple pour anticipé la prochaine cellule. mais comme c'est du calcule, il me faut forcément des valeurs numériques et non des B7 ou A3. d'où le fait que je persiste a utiliser cells ^^

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour

    d'où le fait que je persiste a utiliser cells ^^
    Il faut juste le faire de la bonne manière.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("sgp").Cells(td, 3) = ini
    Parce que Cells(ligne, colonne) est déjà un objet range.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 6
    Par défaut
    rebonjour,

    malheureusement ça fais partie des variantes que j'ai essayé et, même si le code ne renvoi pas d'erreur, la cellule cible reste malgré tout vide. après la cellule cible est en faite une fusion de deux cellules donc peut-être que ça joue mais avec des range("A1") en indiquant la première cellule ça marche donc j'ai supposé , et peut-être a tort justement, que si j'indique à cells les coordonnées de la première cellule bah ça marcherai aussi. mais visiblement non.

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Citation Envoyé par antoine. Voir le message
    rebonjour,

    malheureusement ça fais partie des variantes que j'ai essayé et, même si le code ne renvoi pas d'erreur, la cellule cible reste malgré tout vide. après la cellule cible est en faite une fusion de deux cellules donc peut-être que ça joue mais avec des range("A1") en indiquant la première cellule ça marche donc j'ai supposé , et peut-être a tort justement, que si j'indique à cells les coordonnées de la première cellule bah ça marcherai aussi. mais visiblement non.

    Pourtant c'est le cas, si la cellule fusionnée va de C3 à F8, tu dois inscrire la valeur dans C3.
    As tu contrôler le contenu de Td (visiblement 1 colonne après la cellule active?)

    ++
    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

  7. #7
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Je contrôlerai déjà si la condition est vrai au moins une fois dans la boucle avec un MsgBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    For j = 0 To 19
     
        If tableau(0, j) = Nam Then
     
            ini = tableau(1, j)
            MsgBox "Valeur de ini dans la boucle : " & ini
     
        End If
     
    Next
    La proposition de Clément (que je salut au passage) ne peut que marcher, je rajouterai juste Value :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Worksheets("sgp").Cells(td, 3).Value = ini
    mais je contrôlerai aussi la valeur de "td" car il se peut que la valeur de ini soit bien inscrite dans la feuille "sqp" mais pas dans la cellule à laquelle tu pense !

  8. #8
    Expert éminent 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
    Par défaut
    Citation Envoyé par antoine. Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        dat = ActiveCell.Column
        td = dat + 1
        MsgBox (ini)
        Worksheets("sgp").Range(Cells(td, 3)) = ini
    C'est normal puisque tu indiques à VBA que tu veux faire une zone de cellule (Range) dans la feuille "sgp" en mettant dedans une cellule de la feuille active (Cells sans indication de parent) alors que la feuille active n'est sans doute pas "sgp" (sinon, le Worksheet de début serait inutile).
    Comme c'est virtuellement impossible, VBA ne comprend pas et balance une erreur.

    même si le code ne renvoi pas d'erreur, la cellule cible reste malgré tout vide. après

    la cellule cible est en faite une fusion de deux cellules donc peut-être que ça joue
    On ne le répètera jamais assez : la fusion, c'est [voix gutturale] le MAAAAAL. A éviter autant que possible, d'autant qu'il y a souvent d'autres solutions.

    mais avec des range("A1") en indiquant la première cellule ça marche donc j'ai supposé , et peut-être a tort justement, que si j'indique à cells les coordonnées de la première cellule bah ça marcherai aussi. mais visiblement non.
    Fourni les données de ton problème :
    - Quelles sont les cellules fusionnées ?
    - Quelle cellule veux-tu renseigner ?
    - Quelle est la valeur de la variable td ?

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 6
    Par défaut
    rebonjour,

    merci beaucoup ça à finalement marché, j'ai défusionné les cellules pour les fusionner à nouveau allez savoir pourquoi ça marche mieux maintenant... (je sais c'est le mal la fusion de cellule mais je ne fais que suivre un cahier des charges ^^ ) et en effet c'est bien Worksheets("sgp").Cells(td,3) = ini qui à marché merci de vos réponses en tout cas c'était vachement instructif

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

Discussions similaires

  1. [XL-2010] Problème avec SpecialCells(xlCellTypeVisible).Cells.Count
    Par moi244 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/02/2013, 20h58
  2. Problème avec la fonction Cells.Find
    Par petole dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/01/2012, 16h29
  3. Problème table-cell avec IE 6 et 7
    Par tsunamichups dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 26/05/2010, 16h44
  4. problème avec les cell array
    Par fattouna dans le forum MATLAB
    Réponses: 1
    Dernier message: 02/07/2009, 21h56
  5. [VBA-E] Problème avec Cells.Clear
    Par cwain dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 19/03/2007, 12h00

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