[VBA] Insertion formules avec variables
Résolu/Fermé
Koozag
Messages postés
391
Date d'inscription
jeudi 3 juillet 2008
Statut
Membre
Dernière intervention
31 janvier 2013
-
18 oct. 2010 à 10:39
Koozag Messages postés 391 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 31 janvier 2013 - 19 oct. 2010 à 14:07
Koozag Messages postés 391 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 31 janvier 2013 - 19 oct. 2010 à 14:07
A voir également:
- [VBA] Insertion formules avec variables
- Formules - Télécharger - Études & Formations
- Insertion liste déroulante excel - Guide
- Insertion sommaire word - Guide
- Insertion signature word - Guide
- Touche insertion clavier - Guide
13 réponses
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 313
Modifié par michel_m le 18/10/2010 à 11:53
Modifié par michel_m le 18/10/2010 à 11:53
Bonjour,
pas compris :
Dans un second temps, j'aimerais si possible savoir comment exécuter le code sur une autre feuille, car j'ai mes boutons d'exécution sur une feuille "Auto" et j'aimerais que cela s'exécute sur la feuille "Temp", comment est-ce que cela se traduit dans ce langage ?
ton tableau ordi-login se trouve sur quelle feuille?
en attendant 1° partie de ta question (7000lignes==> utilisation d'un array pour rapidité)
Dans une feuille excel, j'ai diverses données, par exemple le nom d'ordinateur et le login associé, j'aimerais que dans une troisième colonne il y ai une concaténation de ces données
Michel
pas compris :
Dans un second temps, j'aimerais si possible savoir comment exécuter le code sur une autre feuille, car j'ai mes boutons d'exécution sur une feuille "Auto" et j'aimerais que cela s'exécute sur la feuille "Temp", comment est-ce que cela se traduit dans ce langage ?
ton tableau ordi-login se trouve sur quelle feuille?
en attendant 1° partie de ta question (7000lignes==> utilisation d'un array pour rapidité)
Dans une feuille excel, j'ai diverses données, par exemple le nom d'ordinateur et le login associé, j'aimerais que dans une troisième colonne il y ai une concaténation de ces données
Sub concaténer() Dim deplig As Byte, derlig As Integer Dim tablo() As String deplig = 2 'ligne de départ (a adapter) derlig = Range("A10000").End(xlUp).Row ReDim tablo(derlig - deplig) For cptr = deplig To derlig tablo(cptr - deplig) = Cells(cptr, 1) & "-" & Cells(cptr, 2) Next Range("C2:C" & derlig) = Application.Transpose(tablo) End Sub
Michel
Koozag
Messages postés
391
Date d'inscription
jeudi 3 juillet 2008
Statut
Membre
Dernière intervention
31 janvier 2013
50
18 oct. 2010 à 12:06
18 oct. 2010 à 12:06
Merci pour ta réponse.
Alors, en fait mon tableau ordi-login se trouve sur la feuille "Temp", les boutons d'exécution qui sont associés au code sont sur la feuille "Auto".
En ce qui concerne le bout de code que tu m'as donné j'ai une erreur à
=> L'indice n'appartient pas à la sélection.
De mon côté j'ai tenté de pondre quelque chose (on sais jamais ^^).
Le problème que j'ai ici c'est que la cellule passe en texte et affiche =B2&'-'&A2 et non la formule ...
Merci encore Michel pour ton aide =)
Alors, en fait mon tableau ordi-login se trouve sur la feuille "Temp", les boutons d'exécution qui sont associés au code sont sur la feuille "Auto".
En ce qui concerne le bout de code que tu m'as donné j'ai une erreur à
ReDim tablo(derlig - deplig)
=> L'indice n'appartient pas à la sélection.
De mon côté j'ai tenté de pondre quelque chose (on sais jamais ^^).
'code vu sur Internet Dim dernière, Ligne As Integer Range("a1").Select Set wrksht = ActiveWorkbook.Worksheets("Temp") 'Pour chaque colonne de 1 à 12 For i = 1 To 12 ' on détermine à partir du bas, le rang de la dernière cellule non vide Ligne = Sheets(8).Cells(65530, i).End(xlUp).Row 'si le rang trouvé est supérieur au plus grand précédent, "dernière" prend cette valeur: If Ligne > dernière Then dernière = Ligne Next i 'code que j'ai créer For i = 2 to dernière Sheets(8).Cells(1, 3).Value = "=B2&'-'&A2" Next i
Le problème que j'ai ici c'est que la cellule passe en texte et affiche =B2&'-'&A2 et non la formule ...
Merci encore Michel pour ton aide =)
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 313
18 oct. 2010 à 12:28
18 oct. 2010 à 12:28
pourquoi veux tu absolument transformer en formule alors qur tu as une liste donnée (ordi-login)
et je croyais que tu voulais A2(ordi) et B2(login et non B2 A2
Si c''est sur la m^me feuille tu n'as pas besoin de VBA m^me pour 7000 lignes
tu écris en C2 ta formule et tu double-clic sur le carré noir en bas et à droite: tu auras ta formule recopiée sur les 7000 lignes...
et je croyais que tu voulais A2(ordi) et B2(login et non B2 A2
Si c''est sur la m^me feuille tu n'as pas besoin de VBA m^me pour 7000 lignes
tu écris en C2 ta formule et tu double-clic sur le carré noir en bas et à droite: tu auras ta formule recopiée sur les 7000 lignes...
Koozag
Messages postés
391
Date d'inscription
jeudi 3 juillet 2008
Statut
Membre
Dernière intervention
31 janvier 2013
50
18 oct. 2010 à 13:13
18 oct. 2010 à 13:13
Oui c'est possible comme ça mais mon maitre d'oeuvre veut que ça soit tout automatisé sans intervention de l'utilisateur ...
Après je ne veux pas forcément transformer, je veux afficher le bon résultat par n'importe quel moyen, celui du double-clic est bon aussi mais requiert l'intervention de la personne ... :-/
Après je ne veux pas forcément transformer, je veux afficher le bon résultat par n'importe quel moyen, celui du double-clic est bon aussi mais requiert l'intervention de la personne ... :-/
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
18 oct. 2010 à 13:30
18 oct. 2010 à 13:30
Bonjour,
Bonjour Michel, excuse l'incruste c'est juste pour suggérer une autre piste.
Si j'ai bien compris, tes feuilles sont déjà remplie avec 7000 lignes mais ça peu changer... si oui, ma suggéstion..
1°) Coller la formule sur toutes les lignes existante.
2°) Faire un copier/Coller des valeurs pour éliminer les formules.
3°) Mettre une macro dans le SheetsChange qui détecte la modif dans ces colonnes et écrit le résultat dans la bonne colonne.
Avec cette solution se sera tout a fait automatique (sans intervention de l'utilisateur).
Je quitte :-)
A+
Bonjour Michel, excuse l'incruste c'est juste pour suggérer une autre piste.
Si j'ai bien compris, tes feuilles sont déjà remplie avec 7000 lignes mais ça peu changer... si oui, ma suggéstion..
1°) Coller la formule sur toutes les lignes existante.
2°) Faire un copier/Coller des valeurs pour éliminer les formules.
3°) Mettre une macro dans le SheetsChange qui détecte la modif dans ces colonnes et écrit le résultat dans la bonne colonne.
Avec cette solution se sera tout a fait automatique (sans intervention de l'utilisateur).
Je quitte :-)
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Koozag
Messages postés
391
Date d'inscription
jeudi 3 juillet 2008
Statut
Membre
Dernière intervention
31 janvier 2013
50
18 oct. 2010 à 13:36
18 oct. 2010 à 13:36
Salut lermite222, merci à toi de m'aider également
En fait ma feuille est déjà remplie de 7000 lignes avec 7 colonnes.
Parmi ces 2 colonnes il y en a une (la A) qui contient les nom d'ordinateurs et une autre (la B) qui contient les logins des utilisateurs.
J'aimerais qu'une troisième colonne (la C) contienne la concaténation de ces 2 valeurs.
Je ne connais pas le SheetsChange, donc je ne sais pas si cela peut fonctionner, je vais essayer tout ça mais avec le processus que j'ai cela ne risque pas de fonctionner mais je vais essayer ;-)
Merci encore
En fait ma feuille est déjà remplie de 7000 lignes avec 7 colonnes.
Parmi ces 2 colonnes il y en a une (la A) qui contient les nom d'ordinateurs et une autre (la B) qui contient les logins des utilisateurs.
J'aimerais qu'une troisième colonne (la C) contienne la concaténation de ces 2 valeurs.
Je ne connais pas le SheetsChange, donc je ne sais pas si cela peut fonctionner, je vais essayer tout ça mais avec le processus que j'ai cela ne risque pas de fonctionner mais je vais essayer ;-)
Merci encore
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 313
18 oct. 2010 à 14:02
18 oct. 2010 à 14:02
puisque tu tiens tant à mettre une formule ( je ne saurais jamais pourquoi mais je ne vais pas passer ma vie là dessus de m^me que tu demandes ordi-login et que ton essai indique login-ordi....)
voici un exemple d'écriture de ta formule en VBA
Cells(cptr, 3).Formula = "=A" & cptr & "&""-""&B" & cptr
cptr au lieu de "i" 'les variables à 1 lettre sont à éviter dans la plupart des cas
abandon du suivi
voici un exemple d'écriture de ta formule en VBA
Cells(cptr, 3).Formula = "=A" & cptr & "&""-""&B" & cptr
cptr au lieu de "i" 'les variables à 1 lettre sont à éviter dans la plupart des cas
abandon du suivi
Koozag
Messages postés
391
Date d'inscription
jeudi 3 juillet 2008
Statut
Membre
Dernière intervention
31 janvier 2013
50
18 oct. 2010 à 15:09
18 oct. 2010 à 15:09
L'ordre entre login-ordi n'a pas réel importance à vrai dire je me suis surement embrouillé.
Après la formule je ne suis pas forcément bridé à ça je n'avais que ça en tête à ce moment pour une automatisation...
Merci pour l'astuce du cptr.
Le code fonctionne très bien en tout cas, sauf qu'il n'affiche pas un résultat de formule mais du texte en brut ...
En tout cas merci michel
Après la formule je ne suis pas forcément bridé à ça je n'avais que ça en tête à ce moment pour une automatisation...
Merci pour l'astuce du cptr.
Le code fonctionne très bien en tout cas, sauf qu'il n'affiche pas un résultat de formule mais du texte en brut ...
En tout cas merci michel
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
18 oct. 2010 à 16:25
18 oct. 2010 à 16:25
Mais qu'est que tu veux en définitive,
Le code fonctionne très bien en tout cas, sauf qu'il n'affiche pas un résultat de formule mais du texte en brut
Pourquoi une formule alors que le résultat est bon ???
Si non explique un peu mieux ton cas parce que, comme Michel le dis (plus poliment), ca commence à bien faire...
A+
Le code fonctionne très bien en tout cas, sauf qu'il n'affiche pas un résultat de formule mais du texte en brut
Pourquoi une formule alors que le résultat est bon ???
Si non explique un peu mieux ton cas parce que, comme Michel le dis (plus poliment), ca commence à bien faire...
A+
Koozag
Messages postés
391
Date d'inscription
jeudi 3 juillet 2008
Statut
Membre
Dernière intervention
31 janvier 2013
50
18 oct. 2010 à 16:32
18 oct. 2010 à 16:32
C'est bon je me suis arrangé pour arranger votre code.
Eeee par contre l'animosité je comprend pas pourquoi, j'essaie vraiment d'être le plus clair possible et d'essayer de ne pas trop m'écarter du problème !
Faut aussi comprendre que le VBA n'est pas un langage à la portée de tout le monde, et je ne pense pas avoir été benêt ou autre dans mes explications!
Pour clore ce sujet, j'aimerais savoir s'il est possible de mettre une variable à cette endroit (texte en gras):
en clair j'aimerais que la dernière cellule soit une variable "derniere" car les stats évoluent rapidement.
Si je vous ai gavé, tan pis, j'attendrais, je passerais ce post en résolu se soir.
Merci encore !
Eeee par contre l'animosité je comprend pas pourquoi, j'essaie vraiment d'être le plus clair possible et d'essayer de ne pas trop m'écarter du problème !
Faut aussi comprendre que le VBA n'est pas un langage à la portée de tout le monde, et je ne pense pas avoir été benêt ou autre dans mes explications!
Pour clore ce sujet, j'aimerais savoir s'il est possible de mettre une variable à cette endroit (texte en gras):
Selection.AutoFill Destination:=Range("C2:C6973")
en clair j'aimerais que la dernière cellule soit une variable "derniere" car les stats évoluent rapidement.
Si je vous ai gavé, tan pis, j'attendrais, je passerais ce post en résolu se soir.
Merci encore !
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
Modifié par lermite222 le 18/10/2010 à 16:51
Modifié par lermite222 le 18/10/2010 à 16:51
Le gros problème vois-tu, c'est qu'ont te pose des questions et que tu n'y répond pas.
ton tableau ordi-login se trouve sur quelle feuille?
pourquoi veux tu absolument transformer en formule alors qur tu as une liste donnée (ordi-login)
Pourquoi une formule alors que le résultat est bon ???
Si non explique un peu mieux ton cas
Aucune des ces quetions n'a eu de réponse..
Et tu t'étonne de la réaction ??
Et malgrè ça ont a essayés de t'aider, que te faut-il de plus.
Pour ta dernière question.. la réponse dépendra de ta réaction.
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
ton tableau ordi-login se trouve sur quelle feuille?
pourquoi veux tu absolument transformer en formule alors qur tu as une liste donnée (ordi-login)
Pourquoi une formule alors que le résultat est bon ???
Si non explique un peu mieux ton cas
Aucune des ces quetions n'a eu de réponse..
Et tu t'étonne de la réaction ??
Et malgrè ça ont a essayés de t'aider, que te faut-il de plus.
Pour ta dernière question.. la réponse dépendra de ta réaction.
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Koozag
Messages postés
391
Date d'inscription
jeudi 3 juillet 2008
Statut
Membre
Dernière intervention
31 janvier 2013
50
19 oct. 2010 à 08:13
19 oct. 2010 à 08:13
ton tableau ordi-login se trouve sur quelle feuille?
=> Alors, en fait mon tableau ordi-login se trouve sur la feuille "Temp", les boutons d'exécution qui sont associés au code sont sur la feuille "Auto".
pourquoi veux tu absolument transformer en formule alors qur tu as une liste donnée (ordi-login)
=> Après la formule je ne suis pas forcément bridé à ça je n'avais que ça en tête à ce moment pour une automatisation...
Pourquoi une formule alors que le résultat est bon ???
=> Le résultat est bon c'est simplement la mise en forme qui n'est pas correcte mais cela vient d'excel et non du code!
Sinon les réponses je les ai donné, voir ci dessus donc je suis pas de mauvaise foi, après le principe actuel de CCM c'est l'entraide, et comme j'ai précisé au tout début VBA est un langage que je ne connais pas, je ne suis pas non plus ignorant dans l'informatique !
Donc oui je m'étonnes de la réaction, maintenant au risque de te froissé, tu t'es pris la mouche assez rapidement, j'suis pas un pigeon, j'ai demandé de l'aide dans les règles j'ai essayé que ce topic ne traine pas trop en restant présent et en essayant de facilité sa résolution !
=> Alors, en fait mon tableau ordi-login se trouve sur la feuille "Temp", les boutons d'exécution qui sont associés au code sont sur la feuille "Auto".
pourquoi veux tu absolument transformer en formule alors qur tu as une liste donnée (ordi-login)
=> Après la formule je ne suis pas forcément bridé à ça je n'avais que ça en tête à ce moment pour une automatisation...
Pourquoi une formule alors que le résultat est bon ???
=> Le résultat est bon c'est simplement la mise en forme qui n'est pas correcte mais cela vient d'excel et non du code!
Sinon les réponses je les ai donné, voir ci dessus donc je suis pas de mauvaise foi, après le principe actuel de CCM c'est l'entraide, et comme j'ai précisé au tout début VBA est un langage que je ne connais pas, je ne suis pas non plus ignorant dans l'informatique !
Donc oui je m'étonnes de la réaction, maintenant au risque de te froissé, tu t'es pris la mouche assez rapidement, j'suis pas un pigeon, j'ai demandé de l'aide dans les règles j'ai essayé que ce topic ne traine pas trop en restant présent et en essayant de facilité sa résolution !
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
Modifié par lermite222 le 19/10/2010 à 13:00
Modifié par lermite222 le 19/10/2010 à 13:00
rE?
Tu avais marquer en résolu mais suis certain que ce n'est pas le cas.
Ta demande était "d'automatiser" donc il découle de source que des lignes peuvent être ajoutées ou modifiées ?
Répond à cette question (que j'ai déjà poser plus haut) et j'expliquerais comment faire.
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Tu avais marquer en résolu mais suis certain que ce n'est pas le cas.
Ta demande était "d'automatiser" donc il découle de source que des lignes peuvent être ajoutées ou modifiées ?
Répond à cette question (que j'ai déjà poser plus haut) et j'expliquerais comment faire.
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Koozag
Messages postés
391
Date d'inscription
jeudi 3 juillet 2008
Statut
Membre
Dernière intervention
31 janvier 2013
50
19 oct. 2010 à 14:07
19 oct. 2010 à 14:07
Ma demande principale était de pouvoir gérer l'insertion d'une formule dans une ligne de façon variable, la ligne de michel fonctionne.
J'ai bouclé cette ligne jusqu'à ma dernière ligne et c'est tout bon !
D'où le passage en "Résolu".
Cells(cptr, 3).Formula = "=A" & cptr & "&""-""&B" & cptr
J'ai bouclé cette ligne jusqu'à ma dernière ligne et c'est tout bon !
D'où le passage en "Résolu".