Mettre un = devant toutes les cellules
Résolu
inconnu810
Messages postés
6
Statut
Membre
-
Mike-31 Messages postés 19571 Statut Contributeur -
Mike-31 Messages postés 19571 Statut Contributeur -
Bonjour,
J'ai pleins de cellules dans ma base de données qui comportent des valeurs textes telle que "65-2", ou "53+4"
Ma base de donnée contient 17000 lignes, impossible de les faire une par une.
Je voudrais donc que ça m'affiche 63 au lieu de 65-2 en gros que ça met un = qui fonctionne devant. Ou même une alternative à ca.
J'aimerai savoir si c'est possible à faire ou même sur vba ça me va.
Merci

J'ai pleins de cellules dans ma base de données qui comportent des valeurs textes telle que "65-2", ou "53+4"
Ma base de donnée contient 17000 lignes, impossible de les faire une par une.
Je voudrais donc que ça m'affiche 63 au lieu de 65-2 en gros que ça met un = qui fonctionne devant. Ou même une alternative à ca.
J'aimerai savoir si c'est possible à faire ou même sur vba ça me va.
Merci
A voir également:
- Mettre un = devant toutes les cellules
- Mettre 0 devant chiffre excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Verrouiller cellules excel - Guide
- Fusionner deux cellules excel - Guide
- Impossible de fusionner des cellules dans un tableau excel - Forum Bureautique
10 réponses
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
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
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
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
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
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
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
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 ?
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.