Mettre un = devant toutes les cellules
Résolu/Fermé
inconnu810
Messages postés
4
Date d'inscription
dimanche 23 septembre 2018
Statut
Membre
Dernière intervention
23 septembre 2018
-
Modifié le 23 sept. 2018 à 19:41
Mike-31 Messages postés 18354 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 1 janvier 2025 - 23 sept. 2018 à 20:54
Mike-31 Messages postés 18354 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 1 janvier 2025 - 23 sept. 2018 à 20:54
A voir également:
- Mettre un = devant toutes les cellules
- Formule excel pour additionner plusieurs cellules - Guide
- Verrouiller cellules excel - Guide
- Mettre un 0 devant un nombre dans excel - Guide
- Concatener deux cellules excel - Guide
- Excel compter les cellules de couleur - Guide
10 réponses
jee pee
Messages postés
40652
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
10 janvier 2025
9 483
23 sept. 2018 à 19:36
23 sept. 2018 à 19:36
Bonjour,
Tu devrais nous mettre un exemple de quelques lignes de ton fichier pour voir sa complexité.
Car moi ce que je ferais, j'enregistre le fichier en texte .csv, je le modifie par un editeur de texte, puis je le récupère dans excel.
Voire, je fais un copier de la colonne, un coller dans un editeur de texte, je rajoute le = en debut de chaque ligne, un copier de tout le texte et un coller dans la colonne excel.
Cdlt
Tu devrais nous mettre un exemple de quelques lignes de ton fichier pour voir sa complexité.
Car moi ce que je ferais, j'enregistre le fichier en texte .csv, je le modifie par un editeur de texte, puis je le récupère dans excel.
Voire, je fais un copier de la colonne, un coller dans un editeur de texte, je rajoute le = en debut de chaque ligne, un copier de tout le texte et un coller dans la colonne excel.
Cdlt
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 419
Modifié le 23 sept. 2018 à 19:42
Modifié le 23 sept. 2018 à 19:42
Bonjour
pour un texte en A1, la formule en B1:
=SI(NB.SI(A1;"*-*");GAUCHE(A1;TROUVE("-";A1)-1)-DROITE(A1;NBCAR(A1)-TROUVE("-";A1));GAUCHE(A1;TROUVE("+";A1)-1)+DROITE(A1;NBCAR(A1)-TROUVE("+";A1)))
à tirer sur la hauteur utile, ou alors pur faire plus vite:
placer le curseur dans la case adresse à gauche de la barre de formule
taper l'adresse du champ à remplir de formule ex: B1:B17000 ou de la plage et touche ENTER
tout le champ est sélectionné
placez le curseur dans la barre de formule, inscrivez la formule selon la 1° cellule sélectionnée
et touche ctrl +touche enter pour entrer tout le champ d'un coup
une fois les résultats obtenus, faites un copier /collage spécial valeur pour conserver les résultats sans les formules
Respecter bien tous les signes
crdlmnt
pour un texte en A1, la formule en B1:
=SI(NB.SI(A1;"*-*");GAUCHE(A1;TROUVE("-";A1)-1)-DROITE(A1;NBCAR(A1)-TROUVE("-";A1));GAUCHE(A1;TROUVE("+";A1)-1)+DROITE(A1;NBCAR(A1)-TROUVE("+";A1)))
à tirer sur la hauteur utile, ou alors pur faire plus vite:
placer le curseur dans la case adresse à gauche de la barre de formule
taper l'adresse du champ à remplir de formule ex: B1:B17000 ou de la plage et touche ENTER
tout le champ est sélectionné
placez le curseur dans la barre de formule, inscrivez la formule selon la 1° cellule sélectionnée
et touche ctrl +touche enter pour entrer tout le champ d'un coup
une fois les résultats obtenus, faites un copier /collage spécial valeur pour conserver les résultats sans les formules
Respecter bien tous les signes
crdlmnt
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 110
Modifié le 23 sept. 2018 à 19:54
Modifié le 23 sept. 2018 à 19:54
Bonsoir,
problème traité par VBA si tu as quelques notions
EDIT : Ajout des balises de code
problème traité par VBA si tu as quelques notions
Private Sub CommandButton1_Click() Dim x As Range On Error Resume Next For Each x In [A2:A100] If x <> "" Then x = "=" & x Next x End Sub
EDIT : Ajout des balises de code
jordane45
Messages postés
38372
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 janvier 2025
4 722
23 sept. 2018 à 19:56
23 sept. 2018 à 19:56
Bonjour,
Petite correction si on veut "conserver" la formule
Petite correction si on veut "conserver" la formule
Private Sub CommandButton1_Click() Dim x As Range On Error Resume Next For Each x In [A2:A100] If x <> "" Then x.FormulaLocal = "=" & x Next x End Sub
jee pee
Messages postés
40652
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
10 janvier 2025
9 483
23 sept. 2018 à 19:49
23 sept. 2018 à 19:49
Avec ton exemple, comme la position des cellules concernées est aléatoire, j’enregistre dans un texte .cvs, avec un editeur évolué (notepad++) je remplace tous les ; par ;= puis je mets un = en début de chaque ligne, enregistre le .cvs je l'ouvre sous excel je fais un copier de toute la feuille et un coller spécial/valeur seulement dans un nouveau fichier.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 419
23 sept. 2018 à 19:49
23 sept. 2018 à 19:49
Salut Mike
c'est effectivement nettement plus simple
crdlmnt
c'est effectivement nettement plus simple
crdlmnt
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 110
Modifié le 23 sept. 2018 à 20:06
Modifié le 23 sept. 2018 à 20:06
Re,
Code VBA complété et à adapter à la plage, code pour traiter la plage A2:G100
Private Sub CommandButton1_Click()
Dim x As Range
On Error Resume Next
For Each x In [A2:B100]
If x Like "*-*" Or x Like "*+*" Then x.FormulaLocal = "=" & x
Next x
End Sub
Code VBA complété et à adapter à la plage, code pour traiter la plage A2:G100
Private Sub CommandButton1_Click()
Dim x As Range
On Error Resume Next
For Each x In [A2:B100]
If x Like "*-*" Or x Like "*+*" Then x.FormulaLocal = "=" & x
Next x
End Sub
inconnu810
Messages postés
4
Date d'inscription
dimanche 23 septembre 2018
Statut
Membre
Dernière intervention
23 septembre 2018
23 sept. 2018 à 20:26
23 sept. 2018 à 20:26
Toujours excel qui plante. Y a t il d'autres lignes à rajouter ou quelque chose qui m'échappe ? parce que je me souviens vaguement de comment ça fonctionne. j'ai recopié le code changer la plage et exécuté tel quel
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 110
Modifié le 23 sept. 2018 à 20:35
Modifié le 23 sept. 2018 à 20:35
Re,
le code est lancé à partir d'un bouton ActiveX
onglet développeur/module Contrôles/Insérer/clic sur le bouton dans les contrôles activex
Double clic sur le bouton que tu viens de créer, ce qui va ouvrir le VBA
et tu verras ce début de code
Private Sub CommandButton1_Click()
End Sub
entre les deux lignes de code colle ce bout de code
Dim x As Range
On Error Resume Next
For Each x In [A2:B100]
If x Like "*-*" Or x Like "*+*" Then x.FormulaLocal = "=" & x
Next x
ce qui devrait te donner
Adapte la plage à traiter [A2:B100]
reviens sur ta feuille de calcul et libère le Mode création
ATTENTION LE FICHIER DOIT ÊTRE ENREGISTRE SOIT EN .XLSM ou éventuellement avec l"ancienne extension .XLS
le code est lancé à partir d'un bouton ActiveX
onglet développeur/module Contrôles/Insérer/clic sur le bouton dans les contrôles activex
Double clic sur le bouton que tu viens de créer, ce qui va ouvrir le VBA
et tu verras ce début de code
Private Sub CommandButton1_Click()
End Sub
entre les deux lignes de code colle ce bout de code
Dim x As Range
On Error Resume Next
For Each x In [A2:B100]
If x Like "*-*" Or x Like "*+*" Then x.FormulaLocal = "=" & x
Next x
ce qui devrait te donner
Private Sub CommandButton1_Click()
Dim x As Range
On Error Resume Next
For Each x In [A2:B100]
If x Like "*-*" Or x Like "*+*" Then x.FormulaLocal = "=" & x
Next x
End Sub
Adapte la plage à traiter [A2:B100]
reviens sur ta feuille de calcul et libère le Mode création
ATTENTION LE FICHIER DOIT ÊTRE ENREGISTRE SOIT EN .XLSM ou éventuellement avec l"ancienne extension .XLS
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 110
Modifié le 23 sept. 2018 à 21:02
Modifié le 23 sept. 2018 à 21:02
Re,
Mais j'y pense tu as des valeurs et des cellules contenant ce genre de valeur "65-2", ou "53+4"
et la modification change ces valeurs sous forme de formule du genre =65-2 ce qui te donne le résultat souhaité mais peut être souhaites tu avoir directement le résultat et non la formule
pour faire simple, teste ce code
Mais j'y pense tu as des valeurs et des cellules contenant ce genre de valeur "65-2", ou "53+4"
et la modification change ces valeurs sous forme de formule du genre =65-2 ce qui te donne le résultat souhaité mais peut être souhaites tu avoir directement le résultat et non la formule
pour faire simple, teste ce code
Private Sub CommandButton1_Click()
Dim x As Range
On Error Resume Next
Application.ScreenUpdating = False
For Each x In [A2:B100]
If x Like "*-*" Or x Like "*+*" Then
x.FormulaLocal = "=" & x
x.Value = x.Value
End If
Next x
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
inconnu810
Messages postés
4
Date d'inscription
dimanche 23 septembre 2018
Statut
Membre
Dernière intervention
23 septembre 2018
23 sept. 2018 à 20:13
23 sept. 2018 à 20:13
Vaucluse, j'ai essayé de comprendre ta solution mais c'est très complexe pour moi. Je pense que je dois me concentrer beaucoup de temps pour comprendre tout les SI.
Jee pee, je n'ai jamais fais ça avec un fichier texte mais ça m'a l'air pas mal aussi.
Mike, j'ai eu quelques cours de VBA l'année dernière. Même si j'ai pas mal oublié ça reste faisable si vous me guidez un petit peu. J'ai activé le ruban développeur, ouvert un module et j'ai copié exactement votre code mais en changeant les cases de mes données :
Private Sub CommandButton1_Click()
Dim x As Range
On Error Resume Next
For Each x In [A2:AL17982]
If x <> "" Then x = "=" & x
Next x
End Sub
Je ne me souviens plus vraiment comment ça marche. En exécutant cela tel qu'il est ça fait planter mon excel. Y a t il autre chose à comprendre ?
Jee pee, je n'ai jamais fais ça avec un fichier texte mais ça m'a l'air pas mal aussi.
Mike, j'ai eu quelques cours de VBA l'année dernière. Même si j'ai pas mal oublié ça reste faisable si vous me guidez un petit peu. J'ai activé le ruban développeur, ouvert un module et j'ai copié exactement votre code mais en changeant les cases de mes données :
Private Sub CommandButton1_Click()
Dim x As Range
On Error Resume Next
For Each x In [A2:AL17982]
If x <> "" Then x = "=" & x
Next x
End Sub
Je ne me souviens plus vraiment comment ça marche. En exécutant cela tel qu'il est ça fait planter mon excel. Y a t il autre chose à comprendre ?
inconnu810
Messages postés
4
Date d'inscription
dimanche 23 septembre 2018
Statut
Membre
Dernière intervention
23 septembre 2018
23 sept. 2018 à 20:41
23 sept. 2018 à 20:41
Alors j'ai compris mon erreur : car en testant ma méthode d'avant avec peu de cellules (une dizaine par exemple) ça fonctionne et en le faisant pour toutes ça plantait. Je pense que ça ne supportait pas ce volume, pourquoi je ne sais pas.
En reprenant avec le bouton de contrôle comme vous l'avez indiqué ça fonctionne pour toutes les cellules que je voulais ! Magique merci j'ai passé pas mal d'heures sur ça. J'étais certain qu'une formule VBA pouvait résoudre mon problème.
Merci beaucoup à tous.
En reprenant avec le bouton de contrôle comme vous l'avez indiqué ça fonctionne pour toutes les cellules que je voulais ! Magique merci j'ai passé pas mal d'heures sur ça. J'étais certain qu'une formule VBA pouvait résoudre mon problème.
Merci beaucoup à tous.